数学图形之圆柱面

(1)圆柱面

vertices = dimension1:72 dimension2:72

u = from 0 to (2*PI) dimension1
v = from (-5) to (5) dimension2

r = 5

x = r*cos(u)
y = v
z = r*sin(u)

(2)任意角度圆柱面

vertices = dimension1:72 dimension2:72
u = from (-5) to (5) dimension2
v = from 0 to (2*PI) dimension1

a = rand2(0, 2*PI)
b = rand2(0, 2*PI)

c = sin(v)
d = cos(v)

e = sin(b)
f = cos(b)

g = sin(a)
h = cos(a)

x = f*h*d - f*g*c + e*u
y = g*d + h*c
z = -e*h*d + e*g*c + f*u

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

代码中会随机设置圆柱的旋转角度

(3)圆柱体

将圆柱面的两头封上,生成闭合的圆柱体

vertices = dimension1:72 dimension2:72

u = from 0 to (2*PI) dimension1
v = from (-5) to (5) dimension2

r = if(abs(v) < 4.9, 5, 0)

x = r*cos(u)
y = v
z = r*sin(u)

(4)由曲线生成的圆柱面

#http://www.mathcurve.com/surfaces/cylindrederevolution/cylindrederevolution.shtml
vertices = D1:100 D2:100
u = from 0 to (2*PI) D1
v = from 0 to (PI) D2
a = rand2(1, 10)
x = a*cos(u - v)
z = a*sin(u - v)
y = a*( u+v)

(5)鼓形

为了简单,对鼓的隆起使用了SIN函数.

vertices = dimension1:72 dimension2:72

u = from 0 to (2*PI) dimension1
v = from (-1) to (1) dimension2

r = 5
h = rand2(1, r)

t = h*cos(v*PI/2)
p = if(t > 0.01, r+t, 0) 

x = p*cos(u)
y = v*h
z = p*sin(u)

新的鼓形脚本,这个比上一个要圆润得多:

vertices = dimension1:72 dimension2:72

u = from 0 to (2*PI) dimension1
v = from (-PI/2) to (PI/2) dimension2

r = 5
h = rand2(1, r)

t = h*cos(v)
p = if(t > 0.01, r+t, 0) 

x = p*cos(u)
y = h*sin(v)
z = p*sin(u)

(6)齿轮

vertices = D1:65 D2: 4

u = from 0 to (2*PI) D1
v = from -1 to 1 D2

k = from 0 to 64 D1

m = mod(k, 2)

r = 10.0 + m*2

a = 0.9

b = in_range(v, -a, a)

x = r*sin(u)*b
z = r*cos(u)*b

y = if(b, v, v/3)*3

(7)刺柱

vertices = D1:129 D2:65

u = from 0 to (2*PI) D1
v = from (-20) to (20) D2

n = 4

a = from 0 to 128 D1
b = from 0 to 64 D2

t = (mod(a, n) + mod(b, n))/n*4

r = 10 + t

x = r*cos(u)
y = v
z = r*sin(u)

(8)蛏形

vertices = D1:100 D2:100
u = from 0 to (2*PI) D1
v = from -5 to 5 D2

r = 5

x = r*cos(u)
z = r*sin(u)
y = x*v

(9)指定方向的圆柱(极坐标原理)

vertices = dimension1:72 dimension2:72

u = from (0) to (5) dimension2
v = from 0 to (2*PI) dimension1

a = rand2(-2, 2)
b = rand2(-2, 2)
c = rand2(-2, 2)

ac = sqrt(a*a + c*c)
angleY = atan2(ac, b)
angleXZ = atan2(a,c)

m = cos(v)
n = sin(v)

e = sin(angleY)
f = cos(angleY)

g = sin(angleXZ)
h = cos(angleXZ)

x0 = m
y0 = u*f - n*e
z0 = u*e + n*f

x1 = x0*h + z0*g
y1 = y0
z1 = -x0*g + z0*h

x = x1 + a
y = y1 + b
z = z1 + c

(10)指定方向的圆柱(矩阵原理)

vertices = dimension1:72 dimension2:72

u = from (0) to (5) dimension2
v = from 0 to (2*PI) dimension1

a = rand2(-2, 2)
b = rand2(-2, 2)
c = rand2(-2, 2)

len = sqrt(a*a + b*b + c*c)
len = max(len, 0.00001)
px = a/len
py = b/len
pz = c/len

qx = 0
qy = pz
qz = -py
len = sqrt(qx*qx + qy*qy + qz*qz)
len = max(len, 0.00001)
qx = qx/len
qy = qy/len
qz = qz/len

wx = py*qz - pz*qy
wy = pz*qx - px*qz
wz = px*qy - py*qx

x0 = cos(v)
y0 = u
z0 = sin(v)

x = x0*wx + y0*px + z0*qx + a
y = x0*wy + y0*py + z0*qy + b
z = x0*wz + y0*pz + z0*qz + c

数学图形之圆柱面

时间: 2024-08-28 14:12:04

数学图形之圆柱面的相关文章

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

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

数学图形(1.1) 圆,椭圆

圆 vertices = 360 w = from 0 to (2*PI) r = 10.0 x = r*sin(w) y = r*cos(w) 圆面,面上有纹理坐标,有顶点色 vertices = D1:360 D2:100 u = from 0 to (2*PI) D1 v = from 0 to 10 D2 x = sin(u) y = cos(u) r = (x+1)/2 g = (y+1)/2 b = v/10 x = v*x y = v*y 椭圆 vertices = 1000 r

数学图形之锥体

这一节将为你展示如何生成锥体面,以及各种与锥体相关的图形,有金字塔,五角星,圆锥,冰淇淋, 正劈锥体等. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形. 我之前写过生成圆锥的C++程序,代码发布在圆锥(Cone)图形的生成算法. (1)圆锥面 vertices = dimension1:72 dimension2:72 u = from 0 to (2*PI) dimension1 v = from (-5) to (5) dimension2 x = v*cos(u

数学图形(2.16)三维螺线

螺线,通俗来说就是绕圈圈的曲线.在前面我写过一些关于二维螺线的章节数学图形(1.12) 螺线,这一节中讲三维螺线.其实二维转三维只要再其添加一维数据即可.新一维数据的生成方式多种多样,可以让螺线帖在球面上,帖在圆锥面上,贴在柱面上,帖在抛物线曲面上.这样一来,三维螺线种类是二维螺线的N倍.这里,我只以阿基米德螺线为例,将其分别帖到球面,柱面,圆锥,抛物面上. (1)球螺线 前面的章节中我还写过一个数学图形(2.10)绕在球上的线圈,这就是球螺线 vertices = 3600 w = from

数学图形之超球

超球,自然界有很多果实属于超球的形状.之前曾经写过关于超圆的文章:数学图形(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 我使用自己定义语法的脚本代

数学图形之水滴

前几天看科幻小说<三体>,讲到有种武器叫水滴,是三体人用于对付地球人的.这一节将介绍几种水滴形的数学公式. <三体>书中对水滴的描述如下: 当全世界第一次看到探测器的影像时,所有人都陶醉于它那绝美的外形.这东西真的是太美了,它的形状虽然简洁,但造型精妙绝伦,曲面上的每一个点都恰到好处,使这滴水银充满着飘逸的动感,仿佛每时每刻都在宇宙之夜中没有尽头地滴落着.它给人一种感觉:即使人类艺术家把一个封闭曲面的所有可能形态平滑地全部试完,也找不出这样一个造型.它在所有的可能之外,即使柏拉图的

数学图形之球面,椭球面,胶囊体,刺球.

球与圆很相关,一个是三维,一个是二维,可以参考下:圆,椭圆 (1)sphere的第一种写法 vertices = D1:100 D2:100 t = from 0 to (PI*2) D1 r = from 0 to 1 D2 x = 2*r*sin(t)*sqrt(1-r^2) y = 2*r*cos(t)*sqrt(1-r^2) z = 1-2*(r^2) 球的网格线: (2)sphere的另两种写法 vertices = dimension1:36 dimension2:72 u = fr

数学图形(1.37)伯努利双纽线(无穷大的符号)

在数学中, 伯努利双纽线是由平面直角坐标系中的以下方程定义的平面代数曲线 : (x^2 + y^2)^2 = 2a^2 (x^2 - y^2).曲线的形状类似于打横的阿拉伯数字 8 或者无穷大的符号. 关于伯努利双纽线的描述首见于1694年,雅各布·伯努利将其作为椭圆的一种类比来处理.椭圆是由到两个定点距离之和为定值的点的轨迹.而卡西尼卵形线则是由到两定点距离之乘积为定值的点的轨迹.当此定值使得轨迹经过两定点的中点时,轨迹便为伯努利双纽线. 伯努利将这种曲线称为lemniscus, 为拉丁文中“

数学图形之牟合方盖

维基上的解释是:牟合方盖是一种几何体,是两个等半径圆柱躺在平面上垂直相交的公共部分,因为像是两个方形的盖子合在一起,所以被称作“牟合方盖”. 说得有点绕,简单说:牟合方盖是两个半径相等并且轴心互相垂直的圆柱体相交而成的三维图形.个人觉得它是一种即方又圆的图形. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件开源免费. (1)牟合方盖 vertices = D1:100 D2:100 u = from 0 to (PI*2) D1 v = from (-PI/2)