數學圖形之螺旋曲面

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   io   2014   

這一節中將提供各種螺旋曲面的產生方法.

相關軟體參見:數學圖形視覺化檢視,使用自己定義文法的指令碼代碼產生數學圖形.

我之前寫過產生圓環的C++程式,代碼發布在螺旋面(Spire)圖形的產生演算法

 

(1)正螺旋面

      正螺旋面就是讓一條直線l的初始位置與x軸重合,然後讓直線l一邊繞z軸作勻速轉動,一邊沿z軸方向作勻速運動,則直線在這兩種運動的合成下掃出的曲面就是正螺旋面。

      顯然正螺旋面可以看做是由直線形成的,即它是一個直紋面。

為什麼叫正,難道還有反嗎?.看其公式,就是將圓向上拉了拉又多轉了幾圈.

vertices = D1:32 D2:360u = from 0 to 3 D1v = from 0 to (8*PI) D2x = u*cos(v)y = v*0.5z = u*sin(v)

(2)正螺旋面隨機(helicoiddroit)

加上隨機參數的正螺旋面,並向外展開了下.

vertices = D1:32 D2:360u = from 0 to 3 D1v = from 0 to (8*PI) D2a = rand2(0.1, 1)b = rand2(1, 5)x = (b + u)*cos(v)y = v*az = (b + u)*sin(v)

(3)阿基米德螺旋面

看其公式,阿基米德螺旋面就是正螺旋面變化了下高度參數

#http://202.113.29.3/nankaisource/graphics/differential%20geometry/t060307.htm#http://www.bb.ustc.edu.cn/jpkc/xiaoji/wjf/kj/vertices = D1:100 D2:360u = from 0 to (2) D1v = from 0 to (8*PI) D2x = -u/SQRT2*cos(v)y = u/SQRT2 + v/PI/2z = -u/SQRT2*sin(v)

(4)sincos螺旋面

vertices = D1:720 D2:72p = from 0 to (8*PI) D1q = from 0 to (PI) D2a = 5h = rand2(0.5, 5)x = a/2*(cos(p) + cos(q))y = h*(p + q)/2z = a/2*(sin(p) + sin(q))u = pv = q*3

(5)漸開螺旋面

#http://202.113.29.3/nankaisource/graphics/differential%20geometry/t060306.htm#http://www.bb.ustc.edu.cn/jpkc/xiaoji/wjf/kj/vertices = D1:100 D2:360u = from 0 to (4*PI) D1v = from 0 to (8*PI) D2x = 2*[cos(u+v) + u*sin(u+v)]y = vz = 2*[sin(u+v) - u*cos(u+v)]

(6)雙曲正弦螺旋面

vertices = D1:360 D2:72u = from 0 to (5*PI) D1v = from 0 to (4*PI) D2a = 5h = rand2(5, 20)x = a*sh(u - v)*cos(u+v)y = h*(u + v)z = a*sh(u - v)*sin(u+v)w = 50x = limit(x, -w, w)z = limit(z, -w, w)

(7)Developable helicoid

#http://www.mathcurve.com/surfaces/helicoiddeveloppable/helicoiddeveloppable.shtmlvertices = dimension1:1000 dimension2:72u = from 0 to (18*PI) dimension1v = from 0 to (2*PI) dimension2a = rand2(1, 10)b = rand2(1, 10)x = a*(cos(u) - v*sin(u))z = a*(sin(u) + v*cos(u))y = b*(u + v)

(8)Helicoid_wiki

從維基上找的一種螺旋面:

#http://en.wikipedia.org/wiki/Catenoidvertices = D1:400 D2:100u = from (0) to (PI*16) D1v = from (0) to (4) D2t = rand2(-PI, PI)s = sin(t)c = cos(t)x = c*sinh(v)*sin(u) + s*cosh(v)*cos(u)z = u*c + v*sy = -c*sinh(v)*cos(u) + s*cosh(v)*sin(u)

(9)helicoidcercle

#http://www.mathcurve.com/surfaces/helicoidcercle/helicoidcercle.shtmlvertices = D1:72 D2:1200u = from 0 to (PI) D1v = from 0 to (36*PI) D2a = 1h = 1/(2*PI)x = a*cos(u)*cos(v)z = a*cos(u)*sin(v)y = b*sin(u) + h*v

 

再回到第一個指令碼,正螺旋面中它的產生方式是:

"然後讓直線l一邊繞z軸作勻速轉動,一邊沿z軸方向作勻速運動"

如果用一條曲線一邊繞z軸作勻速轉動,一邊沿z軸方向作勻速運動,那會產生何種曲面呢?

這樣的話,每一種曲線都可以產生一種螺旋面.

這裡再提供兩個例子:

 (10)冪螺旋面

vertices = D1:32 D2:360u = from 0 to 2 D1v = from 0 to (8*PI) D2a = rand2(-2, 2)w = pow(u, a)x = u*cos(v)y = v*0.5 + wz = u*sin(v)

(11)指螺旋面

vertices = D1:32 D2:360u = from 0 to 2 D1v = from 0 to (8*PI) D2a = rand2(0, 2)w = pow(a, u)x = u*cos(v)y = v*0.5 + wz = u*sin(v)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.