码迷,mamicode.com
首页 > 编程语言 > 详细

如何使用编程语言画出数学图像

时间:2019-10-17 00:55:54      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:int   科技   通过   3d打印   关于   sum   图像   有一个   位置   

有一次学校有一个科技活动,其中就有一个3d打印机,当时我还很好奇它的工作原理,现在倒是能够理解一些了。要打印3维的,就要将它分割,打印平面重叠形成3维的,同理如何打印平面呢,那就要把平面分成无数的直线,同时又如何打印直线呢,最终还是回到如何打印一个点的问题上来了。我们在本子上画图像时,似乎图像是连续的,然而事实上我们也能明白,其实它是又无数多点构成的,对于计算机中也是如此,如何打印图像呢,也是要将其分割为一定的点然后打印。那么怎么对点进行遍历,将所有点都考虑到呢?这就涉及坐标的知识了,不过计算机中坐标并不是数学中是四维的,但是我们可以借鉴这个思维,用两维来表示一个点,(x,y),定x,然后遍历y,就把一条直线上所有点都考虑到了。之后再移动x,就能考虑到一个平面上所有的点。但是我们怎么打印这个图像呢?图像是由点构成的,而有图的点是占有位置的,如果我们用1来表示有,那么空就是无,在点的移动的过程中,我们判断这个点是否满足数学表达式,如果满足,那么就是1,就打印一个占位符表示有这个点,反之如果不满足那我们就用0表示不存在,就可以使用如打印一个空格来表示。这样我们就能通过这种方法打印出函数图像。

tip:如果按照原函数,点的坐标都是整形的话,结果是比较麻烦的,因此可以有意识的放缩坐标

如用go打印一个心型函数

//利用心型函数打印心形
package main

import "fmt"
var x,y float64                      //以x,y为横纵坐标

func main()  {
    for y := -1.5; y < 1.5; y = y + 0.14 {
        for x := -1.5; x < 1.5; x = x + 0.05 {
            sum := (x * x + y * y - 1) * (x * x + y * y - 1) * (x * x + y * y - 1) + x * x * y * y * y
            if sum <= 0.0 {                                          //若满足点(x,y)在心型函数内,则输出,否则输出空格
                fmt.Printf("I")
            }else {
                fmt.Printf(" ")
            }
        }
        fmt.Printf("\n")
    }

}

总结:

1关于点的意识,把图像分割为无数多的点,然后让点移动画出图像

2关于点的存在与否表示图像的存在与否

如何使用编程语言画出数学图像

标签:int   科技   通过   3d打印   关于   sum   图像   有一个   位置   

原文地址:https://www.cnblogs.com/just-save/p/11689614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!