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

有一次学校有一个科技活动,其中就有一个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关于点的存在与否表示图像的存在与否

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

时间: 2024-10-12 02:31:24

如何使用编程语言画出数学图像的相关文章

如何在论文中画出漂亮的插图?

知乎用户的回答(1259票)]: 强烈推荐 Python 的绘图模块 matplotlib: python plotting .画出来的图真的是高端大气上档次,低调奢华有内涵~ 适用于从 2D 到 3D,从标量到矢量的各种绘图.能够保存成从 eps, pdf 到 svg, png, jpg 的多种格式.并且 Matplotlib 的绘图函数基本上都与 Matlab 的绘图函数名字都差不多,迁移的学习成本比较低.开源免费.如图所示(题目描述中的图在最后): (以下图片均引用自 Thumbnail

全面总结:MATLAB如何画出漂亮的图

在绘图命令中应该如何确定横坐标和纵坐标的标度尺寸(自己定范围) 如何在一个坐标中绘制多条曲线,并用不同的颜色区别. 希望得到答案,谢谢!!!!!!!!!!! help plot help axis axis ('xlabel','ylabel') a1=plot(); hlod on a2=plot(); legend([a1 a2],'图1名',‘图2名') hold off 还可以更多 x1=-pi:pi/12:pi; x2=-pi:pi/12:pi; y1=sin(x1); y2=cos(

教你分分钟画出越南全境的主干路由拓扑

标题党了一次,用一个高大上的的题目先吸引各位看官点进来. 其实原理很简单,我们要做的工作只是做一些数据处理并最终生成kml脚本呈现在Google Earth上. 进入正题: 首先数据来源http://www.caida.org .这是一个英特网数据分析的合作组织,数据比较权威,全球很多网络方面的科研数据都来源于此. 而对本文有用的信息在这里:http://www.caida.org/data/internet-topology-data-kit/  这里面是一些英特网的拓扑信息数据,而且每半年左

几何画板中去除画出的线段的教程

在几何画板中作图和在黑板和纸上画图不一样,没有直接可以使用的橡皮擦或者黑板擦来将画的图擦除,但是在几何画板中如果画错了图或者不需要某个图形,也是可以不让它显示出来的,这样就不会妨碍继续作图.下面就以如何在几何画板中去除画出的线段为例给大家作详细介绍. 方法一 如果该线段没有子对象的,即没有其他图像是建立在这条线段基础上做出来的,那么这个线段就是独立存在的,去除它多作图没有任何影响的,这个时候要去掉线段的话,直接选中该线段,执行"编辑"--"剪切"命令或按Delete

运用椭圆画法,45行代码画出任意正多边形

最近做Box2dWeb开发时,想写个创建正多边形的功能,可是由于学识尚浅,我在草稿纸上画了,想了一个上午也没有研究出什么好方法.后来翻抽屉的时候,找出了以前哥哥画的一张用同心圆画椭圆的示意图.看到这幅画,我不禁在想椭圆不就是一个N边形吗?圆不就是一个正N边形吗?如果把两个同心圆的半径设定为相等,画出来的椭圆不就是一个圆吗?因此,我立刻开始实验.原本我以为比较难,会用到圆的解析式之类的,没想到就45行代码就搞定了,主要用到的数学知识就是sin和cos. 也许有人不明白如何用同心圆画椭圆,我就借用网

H5坦克大战之画出坦克

今天是个特殊的日子,圣诞节,也是周末,在这里先祝大家圣诞快乐!喜庆的日子,我们可以稍微放松一下,扯一扯昨天雷霆对战凯尔特人的比赛,这场比赛大威少又双叒叕拿下三双,而且是一个45+11+11的超级三双,其实小托马斯的表现也不遑多让,拿下31分9个助攻,末节一开始便带队打出一波小高潮反超比分,无奈威少爷最后几分钟暴走直接带走比赛,让人直呼精彩.好了,扯完之后我们进入正题. 今天给大家带来的是一个比较好玩的东西--H5坦克大战.这个东西的实现主要用到了H5的canvas以及原生的js,如果你已经是大牛

场景上一个任意三角形,用程序画出任意一个顶点所在的高,三角形由程序在某一个范围内随机生成

解析: 1.题目解析:已知三角形三个顶点的坐标例如A(x1,y1),B(x2,y2),C(x3,y3),画出任意一个顶点的高线,所有必须求出高另一个点(这里我们叫H点)的坐标,然后两个点连成线. 2.逻辑解析:要计算出高线的垂直点的坐标必须用一个方程组. 3.原理解析:根据数学里面的知识,已知两个顶点(例如B.C)的坐标,即可计算出这两个点连成线的直线方程 y = kx + b:其中 k 指的是直线方程中的斜率,b是一个未知常数,因为知道B.C两点的坐标,所以可以计算出直线BC的直线方程, 那么

把检测出的人脸用椭圆画出

把检测出的人脸用椭圆画出.使用opencv中自带的haarcascades #include "opencv2/core/core.hpp" #include "opencv2/objdetect/objdetect.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream&g

有了这款课件制作工具,轻松画出正多边形

现代教学要求老师们掌握多媒体教学,这就要求掌握教学辅助工具,比如数学课件制作工具几何画板,我们可以用它画出正多边形,下面我们就以用几何画板绘制正五边形为例,看看正多边形的绘制方法. 几何画板软件免费获取地址:http://wm.makeding.com/iclk/?zoneid=17783 1.新建一个几何画板文件.选择"数据"-"新建参数"命令,在打开的对话框中,将"名称"设置为"n","值"设置为5.如