用MMA做三菱鏡

因為臨時需要做三菱鏡的模擬,利用Wolfram 語言有好用的SSSTriangle/SASTriangle…..得到所求的邊角,再轉換成柱子,我目前找到三種方法可以做.

tri = SSSTriangle[3, 4, 5]; h = 8;

方法一,四平八穩的寫一個

tri3D = tri /. 
    Triangle -> Identity /. {{x0_, y0_}, {x1_, y1_}, {x2_, y2_}} -> {
     Triangle[{p0 = {x0, y0, 0}, p1 = {x1, y1, 0}, 
       p2 = {x2, y2, 0}}],
     Triangle[{{x0, y0, h}, {x1, y1, h}, {x2, y2, h}}],
     Polygon[{{x0, y0, 0}, {x1, y1, 0}, {x1, y1, h}, {x0, y0, h}}],
     Polygon[{{x1, y1, 0}, {x2, y2, 0}, {x2, y2, h}, {x1, y1, h}}],
     Polygon[{{x2, y2, 0}, {x0, y0, 0}, {x0, y0, h}, {x2, y2, h}}]
     };
Graphics3D[tri3D]

方法二.用Prism寫一個地球上最短的程式

supper3D = tri /. _[{{x0_, y0_}, {x1_, y1_}, {x2_, y2_}}] ->
    Prism[{{x0, y0, 0}, {x1, y1, 0}, {x2, y2, 0}, {x0, y0, h}, {x1, 
       y1, h}, {x2, y2, h}}];
supper3D // Graphics3D

發表留言