[心得] 數學題目作圖

作者: LPH66 (-6.2598534e+18f)   2014-02-25 01:35:08
也許這裡有人有看過我在 Math 版回答問題時附的圖
這種圖我都是直接開 Mathematica 起來作圖的
畢竟這方面它是專家 XD
(雖然最近會用 Geogebra 作一些幾何相關的圖就是了)
最近一個在 Math 版貼的成品是這個
http://w.csie.org/~b94102/math/Math66.gif
關於這張圖的前情提要可見 Math 版 #1J0pkzzR 以及其回應
以下來分享的則是我這張圖的作圖過程及心得 XD
最終產生圖的程式碼如下:
Table[
Show[{
ParametricPlot3D[
{5 Cos[θ-φ], 5 Sin[θ-φ], -5 Sqrt[35]}/Sin[(Pi+θ)/6],
{θ, 0, 4 Pi}, PlotStyle -> {Green}],
Graphics3D[{
Opacity[0.3], Red, Cone[{{0, 0, -10 Sqrt[35]}, {0, 0, 0}}, 10],
Opacity[1], Lighter[Yellow],
Line[{{0, 0, 0}, {10 Cos[-φ], 10 Sin[-φ], -10 Sqrt[35]}}],
Black, PointSize[.03],
Point[{5/2, -((5 Sqrt[3])/2), -5 Sqrt[35]}/Sin[Pi/9 + φ/6]]
}]
},
PlotRange -> {{-10, 10}, {-10, 10}, {-10 Sqrt[35], 0}},
Boxed -> False, Axes -> False, ImageSize -> 300],
{φ, Pi/3, 13 Pi/3, Pi/8}]
Export["Math66.gif", %,
"DisplayDurations" -> Join[{1.4}, Table[0.1, {32}]],
AnimationRepetitions -> Infinity]
其實程式碼不長, 不過中間很多東西其實都是先算好才寫死進去的
例如綠線的參數式, 那是我從原題的答案裡先求得在展開圖上那條直線的極座標式
把角度θ放大到 0 ~ 4 Pi (兩圈) 再把它「貼」到圓錐面上來的
(算是一點點題外話: θ跟φ其實都可以用鍵盤快速輸入
主要是用兩個 ESC 的三點包住縮寫可以打出希臘字母及一些運算符號
而且不少字都有不只一種這種打法
像是 [ESC]q[ESC], [ESC]th[ESC], [ESC]theta[ESC] 都可以輸入θ
[ESC]f[ESC], [ESC]ph[ESC], [ESC]phi[ESC] 都可以輸入φ
我自己在用時都是打一個字母的這樣比較快 XD
大家常用的 BasicInput 輸入盤上當你指到字時會告訴你這字可以怎麼用這方法輸入)
還有就是這段程式碼裡其實動的不是視角, 而是所有線的位置
(外圈 Table 的參數φ就是類似「相位角」的東西) (所以才叫φ XD)
會這樣寫其實是因為我一直搞不懂 Viewpoint 的計算方式 (炸)
所以既然視角不動我只好讓其它東西轉 XD
也由於視角是預設視角的關係, φ其實不是 0 到 4 Pi 而是平移了 Pi/3
這樣起點才會大致在正前方
(應該不是很正的正前方, 因為可以看到起始時黃線小小歪了一點;
這 Pi/3 的數字也是調整來的, 原本猜是 Pi/4 結果發覺不夠,
0.3 Pi 還是沒能擺正, 於是乾脆試 Pi/3 結果竟然大致擺正了 XD)
圓錐用上 Opacity 一來是較好掌握綠線的長相
二來其實主因是我在畫黑點時因為黑點在圓錐面上, 加上視點的關係
畫出來時黑點一半被圓錐埋住了 XD
原本想要讓黑點跑出來一點, 但不巧因為一個計算錯誤差了負號, 讓黑點埋到不見了
索性不移黑點反過來讓圓錐變透明來解決...
另一個值得一提的點是動態 gif 的輸出, 這是我前一陣子研究 Export 時才發現的
參考的說明是 ref/format/GIF 這一條
http://reference.wolfram.com/mathematica/ref/format/GIF.html
比較重要的是輸出的式子要是一個圖案的 List
這也就是我上面會用 Table 包起來的原因
然後只要指定 "DisplayDurations" 跟 AnimationRepetitions 就會輸出動態 gif 了
作者: ToMoveJizz ( )   2014-02-25 20:54:00
高手
作者: jurian0101 (Hysterisis)   2014-03-21 22:20:00
太不正常了XD 居然是第一篇非回文

Links booklink

Contact Us: admin [ a t ] ucptt.com