如何使用编程语言画出数学图像
Posted just-save
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用编程语言画出数学图像相关的知识,希望对你有一定的参考价值。
有一次学校有一个科技活动,其中就有一个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(" ") } }
总结:
1关于点的意识,把图像分割为无数多的点,然后让点移动画出图像
2关于点的存在与否表示图像的存在与否
以上是关于如何使用编程语言画出数学图像的主要内容,如果未能解决你的问题,请参考以下文章