2025年4月27日(日) 08:09 JST

2012年度第2回GDL講習会

  • 2012年4月30日(月) 16:09 JST
  • 投稿者:
    ゲストユーザ

第2回「螺旋階段」「螺旋スロープ」

第2回の講習では、FORループによる繰り返しの処理について学びました。講習内では前年度と同じく「螺旋階段」のモデリングに取り組み、「螺旋スロープ」のモデリングを課題として出題しました。


この課題のポイントは文字通り「スロープ」の作り方です。

講習で作成した螺旋階段を応用して、階段部分をスロープに書き換えていきます。この際PLANEの捩れに注意しなければなりません。 コンピュータでは原則的に空間として捩れを持つ面を描画することができません。 GDLにおいても、PLANEでは同一平面上に座標が設定されていなければスクリプトが正しい場合でも面を描画することができないため、三角形を連ねることでスロープ部分を表現しました。

以下、解答の一例を紹介します。

r1 = 15 !!内側半径
r2 = 20 !!外側半径
n = 400 !!四角形の数
x = 2.5 !!スロープの回転数
h1 = 0.1 !!スロープの勾配調節
h2 = 1.5 !! 手すりの高さ


FOR i = 1 TO n

!! スロープの作成
	PLANE 3,  r1*COS ( ( 360*x ) / n*( i-1 ) ) , r1*SIN ( ( 360*x ) / n*( i-1 ) ) , 0 ,
			r2*COS ( ( 360*x ) / n*( i-1 ) ) , r2*SIN ( ( 360*x ) / n*( i-1 ) ) , 0 ,
			r2*COS ( ( 360*x ) / n*i ) , r2*SIN ( ( 360*x ) / n*i ) , h1

	PLANE 3,  r1*COS ( ( 360*x ) / n*( i-1 ) ) , r1*SIN ( ( 360*x ) / n*( i-1 ) ) , 0 ,
			r1*COS ( ( 360*x ) / n*i ) , r1*SIN ( ( 360*x ) / n*i ) , h1,
			r2*COS ( ( 360*x ) / n*i ) , r2*SIN ( ( 360*x ) / n*i ) , h1
!! スロープの作成終了
	
!! 外側の手すりの作成
	!! 手すり部分
	LIN_ r2*COS ( ( 360*x ) / n*( i-1 ) ) , r2*SIN ( ( 360*x ) / n*( i-1 ) ) , h2 ,
		r2*COS ( ( 360*x ) / n*i ) , r2*SIN ( ( 360*x ) / n*i ) , h1+h2
	!! 支柱部分
	LIN_ r2*COS ( ( 360*x ) / n*( i-1 ) ) , r2*SIN ( ( 360*x ) / n*( i-1 ) ) , 0 ,
		r2*COS ( ( 360*x ) / n*( i-1 ) ) , r2*SIN ( ( 360*x ) / n*( i-1 ) ) , h2
!! 外側の手すりの作成終了

!! 内側の手すりの作成
	!! 手すり部分
	LIN_ r1*COS ( ( 360*x ) / n*( i-1 ) ) , r1*SIN ( ( 360*x ) / n*( i-1 ) ) , h2 ,
		r1*COS ( ( 360*x ) / n*i ) , r1*SIN ( ( 360*x ) / n*i ) , h1+h2
	!! 支柱部分
	LIN_ r1*COS ( ( 360*x ) / n*( i-1 ) ) , r1*SIN ( ( 360*x ) / n*( i-1 ) ) , 0 ,
		r1*COS ( ( 360*x ) / n*( i-1 ) ) , r1*SIN ( ( 360*x ) / n*( i-1 ) ) , h2
!! 内側の手すりの作成終了

	ADDZ h1	!! 最後に高さをADDする
NEXT i