數學圖形之將曲線轉化為曲面

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   os   資料   2014   

      本文將展示幾種基本圖形的產生演算法,包括:圓面,圓球,圓柱,圓錐,圓環,圓管,螺旋環,圓螺,五角環,金字塔,正8面體.使用自己定義文法的指令碼代碼產生數學圖形.相關軟體參見:數學圖形視覺化檢視,該軟體免費開源.

      之前我寫過一篇文章:數學圖形之將曲線(curve)轉化成曲面管,寫完之後,意識到這種產生曲面管的指令碼代碼太過複雜了.本來其輸入為曲線+管的半徑,那麼完全可以將其改成一句話的形式.我需要在產生曲線的代碼後面加上一句話就可以將其轉化成曲面管.pipe = radius[0.5], type[0]

      實現了由"pipe"指令碼解析後,我想到曲線是可以通過旋轉,縮放,平移,這三種基礎的圖形變換,轉化成曲面的.OK,於是又實現了如下的文法:

 

(1)繞空間中任意一條直線進行旋轉, 可以產生旋轉面

rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

(2)沿著一個任意朝向移動頂點, 可以產生柱面
translate = dir[0, 1, 0], dis[0, 5]

(3)以空間中任意一點為基點,對曲線上的頂點進行縮放
scale = anchor[0, 0, 0], x[1, 0], z[1, 0]

      最後,由曲線到曲面會增加一個維度資料,需要設定其資料大小:surface_slices = 72

      下面將展示使用這幾種新加的語句產生的圖形與指令碼代碼:

 

圓面

vertices = 360u = from 0 to (2*PI)r = 5.0x = r*sin(u)y = r*cos(u)scale = anchor[0, 0, 0], x[1, 0], y[1, 0]

 

圓球

常規產生球面的演算法參見:數學圖形之球面

vertices = 360u = from 0 to (PI)r = 2.0x = r*sin(u)y = r*cos(u)rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

圓柱

常規產生圓柱的演算法參見:數學圖形之圓柱面

vertices = 360u = from 0 to (2*PI)r = 2.0x = r*sin(u)z = r*cos(u)translate = dir[0, 1, 0], dis[0, 5]

 

圓錐

常規產生圓錐的演算法參見:數學圖形之錐體

vertices = 360u = from 0 to (2*PI)r = 2.0x = r*sin(u)z = r*cos(u)translate = dir[0, 1, 0], dis[0, 5]scale = anchor[0, 0, 0], x[1, 0], z[1, 0]

 

圓環

常規產生圓環的演算法參見:數學圖形之圓環

vertices = 360u = from 0 to (2*PI)r = 2.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 72rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

圓管

vertices = 360u = from 0 to (2*PI)r = 5.0x = r*sin(u)z = r*cos(u)pipe = radius[0.5], type[0]

 

螺旋環

常規產生螺旋環的演算法參見:數學圖形之螺旋管

vertices = 100u = from 0 to (2*PI)r = 1.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 200rotate = anchor[0, 0, 0], axis[0, 1, 0], angle[0, 8*PI]translate = dir[0, 1, 0], dis[0, 9]

 

圓螺

vertices = 100u = from 0 to (2*PI)r = 1.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 200scale = anchor[0, 0, 0], x[1, 0], y[1, 0]rotate = anchor[0, 0, 0], axis[0, 1, 0], angle[0, 8*PI]translate = dir[0, 1, 0], dis[0,6]

 

五角環

vertices =6u = from 0 to (2*PI)r = 2.0x = r*sin(u) + 5y = r*cos(u)surface_slices = 6rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

金字塔

vertices =5u = from 0 to (2*PI)r = 2.0x = r*sin(u)z = r*cos(u)surface_slices = 3translate = dir[0, 1, 0], dis[0, 2]scale = anchor[0, 0, 0], x[1, 0], z[1, 0]

 

正8面體

vertices =3u = from 0 to (PI)r = 2.0x = r*sin(u)y = r*cos(u)surface_slices = 5rotate = anchor[0, 0, 0], axis[0,1, 0], angle[0, 2*PI]

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.