用Mathematica繪制球面曲線
任何曲面與球面的交線,都是球面曲線。前面,我們用ViewPoint實現(xiàn)了對3D曲面的多角度旋轉(zhuǎn)觀察——參考《用Mathematica旋轉(zhuǎn)3D圖形——ViewPoint用法》。文中提到,觀察點的軌跡是一
任何曲面與球面的交線,都是球面曲線。前面,我們用ViewPoint實現(xiàn)了對3D曲面的多角度旋轉(zhuǎn)觀察——參考《用Mathematica旋轉(zhuǎn)3D圖形——ViewPoint用法》。文中提到,觀察點的軌跡是一條曲線。
如果觀察點的軌跡曲線是一條球面曲線,把3D圖形置于球面球心位置,就可以獲得穩(wěn)定的動態(tài)圖。所以,我們渴望獲得全方位的多角度觀察,就要采用相應(yīng)的多角度全方位的球面曲線。
先畫球面
這里以單位球面為例,可以有三種畫法:
1. ParametricPlot3D[Sin[u] Cos[v], Sin[u] Sin[v], Cos[u]}, {u, 0, 2 Pi}, {v, 0, Pi}]
2. SphericalPlot3D[1, {x, 0, Pi}, {y, 0, 2 Pi}]
3. ContourPlot3D[x^2 y^2 z^2 1, {x, -1.1, 1.1}, {y, -1.1, 1.1}, {z, -1.1, 1.1}]
可以看到,三種方法畫出的單位球面的網(wǎng)格線有明顯的不同。
繪制球面和柱面交在一起的情形
其中,柱面的直徑長度是球半徑的長度,柱面的一條母線過球心。為了方便計算,把球半徑設(shè)為2。
球面的方程是:x^2 y^2 z^2 2^2, {x, -2.1, 2.1}, {y, -2.1, 2.1}, {z, -2.1, 2.1}
柱面的方程是:(x - 1)^2 y^2 1, {x, -2.1, 2.1}, {y, -2.1, 2.1}, {z, -2.1, 2.1}
繪制Viviani曲線
再來繪制著名的Viviani曲線——音譯為“維維亞尼”曲線。在網(wǎng)上找到一個例子,照葫蘆畫瓢。結(jié)果感覺很不滿意!
在Mathematica智囊團里面,群友告訴我,原因是圖片精度不夠高的緣故,并提供了以下代碼。結(jié)果很好!我在這里表示感謝!
更簡潔的代碼
網(wǎng)友還給出一個更簡潔的代碼,用BoundaryStyle來畫兩個曲面的相交線,用Tube把相交線畫成“管狀”。