数学图形之地形曲面

在数学表达式中,如果能写成这种形式:y = f(x, z),就可以称之为地形曲面.因为可以认为每一个平面上的位置都会对应唯一一个高度值.

在这一节中,将展示几个地形曲面的图形.使用自己定义语法的脚本代码生成超球图形.相关软件参见:数学图形可视化工具,该软件免费开源.QQ交流群: 367752815

这个软件的最初版本就是只针对y = f(x, z)这种方程而写的,详见:WHY数学图形显示工具.当时是输入一个数学表达式,然后再输入其数据范围来生成一个图形,如下图所示:

而后在这个软件的基础上,做了重构.重写了原有的数学表达式解析的算法.自己定义了一套脚本语言格式,以脚本的形式编辑数学图形.

(1)

#http://www.mathcurve.com/surfaces/algebricsu/algebricsu.shtml

vertices = dimension1:101 dimension2:101

x = from (-4) to (4) dimension1
z = from (-4) to (4) dimension2

a = (x*x + z*z)

y = x*z/(a*a)

y = limit(y, -5, 5)

(2)

vertices = dimension1:320 dimension2:320

x = from (-4) to (4) dimension1
z = from (-4) to (4) dimension2
r = x^2 + z^2
y = sin(x^2 + z^2*3)/(0.05 + r) + (x^2 + z^2*5)*exp(1 - r)/2

u = x
v = z

x = x*5
y = y*5
z = z*5

(3)

vertices = dimension1:201 dimension2:201
x = from (-20) to (20) dimension1
z = from (-20) to (20) dimension2

y = sin(sqrt(x*x+z*z))

u = x/5
v = z/5

(4)

vertices = dimension1:201 dimension2:201
x = from (-8*PI) to (8*PI) dimension1
z = from (-8*PI) to (8*PI) dimension2
a = abs(x)
b = abs(z)
y = sin(a * b * 0.1)*exp((a + b)/24)

u = x/5
v = z/5

(5)

vertices = dimension1:201 dimension2:201

x = from (-100) to (100) dimension1
z = from (-100) to (100) dimension2
y = sqrt(abs(x*z)) + sin(x*z*0.005)*5

u = x/10
v = z/10

(6)

vertices = dimension1:101 dimension2:101

x = from (-100) to (100) dimension1
z = from (-100) to (100) dimension2
y = sqrt(abs(x*z))

u = x/10
v = z/10

数学图形之地形曲面

时间: 2024-10-08 23:58:41

数学图形之地形曲面的相关文章

数学图形之螺旋曲面

这一节中将提供各种螺旋曲面的生成方法. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形. 我之前写过生成圆环的C++程序,代码发布在螺旋面(Spire)图形的生成算法 (1)正螺旋面 正螺旋面就是让一条直线l的初始位置与x轴重合,然后让直线l一边绕z轴作匀速转动,一边沿z轴方向作匀速运动,则直线在这两种运动的合成下扫出的曲面就是正螺旋面. 显然正螺旋面可以看做是由直线形成的,即它是一个直纹面. 为什么叫正,难道还有反吗?.看其公式,就是将圆向上拉了拉又多转了几圈. ve

数学图形之SineSurface与粽子曲面

SineSurface直译为正弦曲面.这有可能和你想象的正弦曲线不一样.如果把正弦曲线绕Y轴旋转,得到的该是正弦波曲面.这个曲面与上一节中的罗马曲面有些相似,那个是被捏过的正四面体,这个则是个被捏过正方体. 本文将展示SineSurface与粽子曲面的生成算法和切图,使用自己定义语法的脚本代码生成数学图形.相关软件参见:数学图形可视化工具,该软件免费开源.QQ交流群: 367752815 这是从http://mathworld.wolfram.com/SineSurface.html上找到的一种

数学图形之贝塞尔(Bézier)曲面

前面章节中讲了贝塞尔(Bézier)曲线,而贝塞尔曲面是对其多一个维度的扩展.其公式依然是曲线的公式: . 而之所以由曲线变成曲面,是将顶点横向连了再纵向连. 很多计算机图形学的教程都会有贝塞尔曲面的DEMO.而这里,我依然是使用我制定的脚本代码生成贝塞尔曲面.代码中的控制顶点坐标为随机数生成,所以每次生成的曲面图形都不一样. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 二次贝塞尔曲面: 需要生成3*3个控制顶点 v

数学图形之将曲线转化为曲面

本文将展示几种基本图形的生成算法,包括:圆面,圆球,圆柱,圆锥,圆环,圆管,螺旋环,圆螺,五角环,金字塔,正8面体.使用自己定义语法的脚本代码生成数学图形.相关软件参见:数学图形可视化工具,该软件免费开源. 之前我写过一篇文章:数学图形之将曲线(curve)转化成曲面管,写完之后,意识到这种生成曲面管的脚本代码太过复杂了.本来其输入为曲线+管的半径,那么完全可以将其改成一句话的形式.我需要在生成曲线的代码后面加上一句话就可以将其转化成曲面管.pipe = radius[0.5], type[0]

数学图形(2.1)三叶结

终于将二维图形发完了,从这一节开始,步入3D的图形世界. 以下是维基中对三叶结的介绍: 在纽结理论中,三叶结(trefoil knot)是一种最简单的非平凡纽结.可以用反手结连接两个末端而达成.它是唯一一种有3个交叉的纽结.它也可以描述为环面纽结.由于三叶结的结构极为简单,它是研究纽结理论很重要的基本案例,在拓扑学.几何学.物理学.化学领域,有广泛的用途. 三叶结可以由以下的参数方程确定: 三叶结也可以看作环面纽结.对应的参数方程为: 针对如上两种数学公式对应的脚本代码如下: #http://z

数学图形之花儿

前几天,我曾经发布过关于如何生成花形曲线的文章,参见 数学图形(1.11) 玫瑰线 数学图形(1.27) 花 这一节中,会将二维的花形曲线变成三维的花形曲面,其样子会漂亮很多. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形. (1)玫瑰线 vertices = D1:4000 D2:6 n = 8 u = from 0 to (n*PI) D1 v = from 0 to 1 D2 a = rand_int2(2, 16) r = 10*sin(a*u)*v k =

数学图形之超球

超球,自然界有很多果实属于超球的形状.之前曾经写过关于超圆的文章:数学图形(1.44)超圆, 这篇文章将对其扩展一下,由超圆的二维曲线转化为超球三维曲面. 超圆就是方程式:x^a+y^b= c          生成的图形.当a==b==2时,为一个圆. 超椭圆是方程式:m*x^a+n*y^b= c 生成的图形.当a==b==2时,为一个椭圆. 那么超球则是如下定义: 超球的方程式:x^a+y^b+z^c= d 超椭球的方程式:m*x^a+n*y^b+k*z^c= d 我使用自己定义语法的脚本代

数学图形之Boy surface

这是一个姓Boy的人发现的,所以取名为Boy surface.该图形与罗马图形有点相似,都是三分的图形.它甚至可以说是由罗马曲面变化而成的. 本文将展示几种Boy曲面的生成算法和切图,使用自己定义语法的脚本代码生成数学图形.相关软件参见:数学图形可视化工具,该软件免费开源.QQ交流群: 367752815 In geometry, Boy's surface is an immersion of the real projective plane in 3-dimensional space f

数学图形之螺旋管

上一节讲的是螺旋曲面,这一节中将曲面绕个圈,生成螺旋管.提供了若干种生成螺旋管的脚本代码,最后还生成麻花的图形. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形. (1)螺旋管 vertices = D1:720 D2:72 u = from 0 to (10*PI) D1 v = from 0 to (2*PI) D2 a = 3 x = (a + cos(v)) * cos(u) z = (a + cos(v)) * sin(u) y = sin(v) + u (2