29 123
發新話題
打印

[3D 建模軟體] Google SketchUp

TOP

TOP

TOP

TOP

TOP

TOP

TOP

原問題http://math.pro/db/viewthread.php?tid=2154&page=3#pid14888



SketchUp檔下載


105.6.10補充
完成一件SketchUp作品需要以下幾個步驟
1.選題
評估該數學題目是否適合用SketchUp呈現,該採用靜態圖還是動態圖呢?

2.手畫分鏡圖


3.SketchUp畫圖


4.輸出bmp圖


5.bmp圖檔加上文字

文字A,B移動時的座標


6.製成GIF


[ 本帖最後由 bugmens 於 2016-12-24 10:41 AM 編輯 ]

TOP

原問題http://math.pro/db/viewthread.php?tid=924&page=1#pid1968


▲球面三角垛
SketchUp檔下載


▲功能表 視窗/元件選項可以調整每個邊球的個數


▲在SketchUp Pro版才能在功能表 視窗/元件屬性看到運作的機制

各屬性的公式如下
Copies=三角垛!Size*(三角垛!Size+1)*(三角垛!Size+2)/6-1
Discriminant=sqrt(9*(copy+1)*(copy+1)-1/27)
PositionZ=floor(-1+power(3*(copy+1)+Discriminant,0.33333)+power(3*(copy+1)-Discriminant,0.33333))
Remainder=copy-PositionZ*(PositionZ+1)*(PositionZ+2)/6
PositionX=floor((-1+sqrt(8*Remainder+1))/2)
PositionY=Remainder-PositionX*(PositionX+1)/2
X=(sqrt(3)*PositionX-2/sqrt(3)*PositionZ-1)*100
Y=(2*PositionY-PositionX-1)*100
Z=(2/3*sqrt(6)*(-1+三角垛!Size-PositionZ))*100


簡述背後的數學原理
1.要複製幾個球
Copies=三角垛!Size*(三角垛!Size+1)*(三角垛!Size+2)/6-1
每個球編號以SketchUp內建變數copy表示,編號從0到Copies。

三角垛個數公式為\( \displaystyle 1+3+6+10+\ldots+\frac{n(n+1)}{2}=\frac{n(n+1)(n+2)}{6} \)
https://zh.wikipedia.org/wiki/ ... 9.E8.A7.92.E5.9E.9B


2.編號第copy號的球在第幾層
Discriminant=sqrt(9*(copy+1)*(copy+1)-1/27)
PositionZ=floor(-1+power(3*(copy+1)+Discriminant,0.33333)+power(3*(copy+1)-Discriminant,0.33333))

從三角垛最上面的球編號下來
                             21
                   11        22 23
           5      12 13      24 25 26
     2    6 7    14 15 16    27 28 29 30
 1  3 4  8 9 10  17 18 19 20  31 32 33 34 35
第1層  第2層   第3層      第4層        第5層
編號從1到35個球,但SketchUp內建變數copy從0開始數,所以copy要+1才是對應的編號。

一元三次方程式\( \displaystyle \frac{Z(Z+1)(Z+2)}{6}=copy+1 \)
化簡後得到\( Z^3+3Z+2Z-6(copy+1)=0 \)
利用一元三次方程式的公式解\( ax^3+bx^2+cx+d=0 \)
判別式\( D=\sqrt{\displaystyle \left( \frac{bc}{6a^2}-\frac{b^3}{27a^3}-\frac{d}{2a} \right)^2+\left( \frac{c}{3a}-\frac{b^2}{9a^2} \right)^3} \)
\( \displaystyle x=-\frac{b}{3a}+\root 3 \of{\displaystyle \frac{bc}{6a^2}-\frac{b^3}{27a^3}-\frac{d}{2a}+D}+\root 3 \of{\displaystyle \frac{bc}{6a^2}-\frac{b^3}{27a^3}-\frac{d}{2a}-D} \)
https://zh.wikipedia.org/wiki/ ... B.E8.A7.A3.E6.B3.95
各項係數\( a=1 \),\( b=3 \),\( c=2 \),\( d=-6(copy+1) \)
判別式\( D=\sqrt{\displaystyle 9(copy+1)^2-\frac{1}{27} } \)
\( Z=-1+\root 3 \of {3(copy+1)+D}+\root 3 \of {3(copy+1)-D} \)
\( PositionZ=\left[ Z \right] \)再取高斯函數得到整數

要注意的是PositionZ還要+1才是所在的層數
例如:copy=15,編號第16號球,計算得到PositionZ=3,但球在第4層


3.餘數多少
Remainder=copy-PositionZ*(PositionZ+1)*(PositionZ+2)/6
例如:copy=15,編號第16號球,PositionZ=3,計算得到Remainder=5(從0開始數),在第6個位置


4.在第幾排的第幾個
PositionX=floor((-1+sqrt(8*Remainder+1))/2)
PositionY=Remainder-PositionX*(PositionX+1)/2

一元二次方程式\( \displaystyle \frac{Z(Z+1)}{2}=Remainder \)
化簡後得到\( Z^2+Z-2Remainder=0 \)
\( \displaystyle Z=\frac{-1+\sqrt{8Remainder+1}}{2} \)
\( PositionX=\left[ Z \right] \)再取高斯函數得到整數

例如:copy=15,編號第16號球,Remainder=5,計算得到PositionX=2(從0開始數),在第3排
\( \displaystyle PositionY=Remainder-\frac{PositionX(PositionX+1)}{2}=2 \)(從0開始數),左邊數過來第3個


5.轉換成球心坐標
X=(sqrt(3)*PositionX-2/sqrt(3)*PositionZ-1)*100
Y=(2*PositionY-PositionX-1)*100
Z=(2/3*sqrt(6)*(-1+三角垛!Size-PositionZ))*100

參考\(n=4\)各層球心坐標,就可以知道球心坐標公式
http://math.pro/db/attachment.ph ... 97&t=1482545551


補充資料
SketchUp動態元件教學
http://help.sketchup.com/en/article/3000118

TOP

 29 123
發新話題