建築でコンピュータ、する?
2025年4月27日(日) 10:17 JST
第2回の講習では、FORループによる繰り返しの処理を学びました。第2回の宿題は、「螺旋階段」のモデリングです。 この課題のポイントは、極座標への変換と蹴込み部分の作り方です。
まず、講習で作成した螺旋階段を応用して、内側にも円ができるように、四角形で踏み面を描きます。 その後、踏み面の片側に角度t分幅をもたせ、踏み面同士が少しずれる様にします。次に蹴込み部分は、PLANEで描く際に、面の捩れ注意しなければなりません。 スクリプト確認では正常に通ってしまいますが、PLANEは同一平面上でなければ面を描画できません。ですので、三角形の図形を2つ使って蹴込みを作ります。蹴上の部分が少し折れているのが分かると思います。
以下、解答の一例です。
r1 = 10 !!外側半径 r2 = 2 !!内側半径 n = 40 !!階段数 x = 3 !!階段の回転数 t = 5 !!踏み幅θ h1 = 1 !!蹴上げ高さ h2 = 5 !!手すり高さ FOR i = 1 TO n !!階段踏み面 PLANE 4, r2*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r2*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), 0, r1*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r1*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), 0, r1*COS ( ( 360*x ) / n*i ), r1*SIN( ( 360*x ) / n*i ), 0, r2*COS ( ( 360*x ) / n*i ), r2*SIN( ( 360*x ) / n*i ), 0 !!階段蹴上げ!!ねじれるので三角形2つで面を作る PLANE 3,r1*COS ( ( 360*x ) / n* ( i - 1 ) ), r1*SIN ( ( 360*x ) / n* ( i - 1 ) ), -h1, r2*COS ( ( 360*x ) / n* ( i - 1 ) ), r2*SIN ( ( 360*x ) / n* ( i - 1 ) ), -h1, r2*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r2*SIN ( ( 360*x ) / n* ( i - 1 ) -t ) , 0 PLANE 3,r1*COS ( ( 360*x ) / n* ( i - 1 ) ), r1*SIN ( ( 360*x ) / n* ( i - 1 ) ), -h1, r1*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r1*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), 0, r2*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r2*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), 0 !!外側手すり !!柱 LIN_ r1*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r1*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), 0, r1*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r1*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), h2 !!手すり LIN_ r1*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r1*SIN ( ( 360*x ) / n* ( i -1 ) -t ), h2, r1*COS ( ( 360*x ) / n*i -t ), r1*SIN ( ( 360*x ) / n*i -t ), h2 + h1 !!内側手すり !!柱 LIN_ r2*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r2*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), 0, r2*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r2*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), h2 !!手すり LIN_ r2*COS ( ( 360*x ) / n* ( i - 1 ) -t ), r2*SIN ( ( 360*x ) / n* ( i - 1 ) -t ), h2, r2*COS ( ( 360*x ) / n*i -t ), r2*SIN ( ( 360*x ) / n*i -t ), h2 + h1 ADDZ h1 !!最後に高さをaddする NEXT i