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

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关于点的存在与否表示图像的存在与否

以上是关于如何使用编程语言画出数学图像的主要内容,如果未能解决你的问题,请参考以下文章

怎样快速画出二次函数图像

如何从Android片段中的相机获取图像

如何从片段中检索gridview中的图像?

我如何在iOS上以编程方式为图像着色?

如何在片段中从相机捕获图像,

想用Matlab画出下面图片中函数的三维图像,求大神帮忙编写程序!!!