当方の「Script!3D」を使って立体を作ろう話その20。
今回は、半球(ドーム)の作図命令です。半球は球を半分にカットしたものです。

ひっくり返して底面を非表示にして内側を表にすると半球形の穴が描けます。

半球を円環状に配置してみます。

さて次に,UFOモドキを作図してみます。

変数値はご自由に指定して下さい。
単純な3D図形でも、色々と組み合わせていくと複雑な図形を作る事は出来ると思います。まぁ、完成形に持っていかなくても、粗めに作っておいて、スケッチアップ等へデータを渡し、そちらで完成形を作る、というパターンでも良いと思います。
今回は、半球(ドーム)の作図命令です。半球は球を半分にカットしたものです。
半球の作図まずは簡単例です。
DOME n,sp,r,f1,f
原点・作図基準平面は、変換マトリックスとなります。
n : (out) 登録された最終図形要素番号(1〜)
sp: 分割数(3-1000)
r : 半径[mm] (>0)
f1: 底面の表示 0:しない 1:する
f : 表裏逆フラグ 0:外側が表面 1:内側が表面
// 半球作図テスト01実行します。
#VAR
sp = 12 ;*分割数
n
#DRAW
PEN 71
DOME n,sp,50,1,0

ひっくり返して底面を非表示にして内側を表にすると半球形の穴が描けます。
// 半球作図テスト02実行します。
#VAR
sp = 12 ;*分割数
w1
n
#DRAW
CAL w1 = PI // Z軸を下向きにします
ROXMATR w1
PEN 72
DOME n,sp,50,0,1

半球を円環状に配置してみます。
// 半球作図テスト03実行します。
#VAR
sp = 12 ;*分割数
sr = 50 ;*半球の半径
nr =300 ;*円状半径
nx = 16 ;*並べる数
i
ia
ix
iy
iz
n
#DRAW
PEN 73
CAL ia = 0
CAL i = 0
#WHILE (i < nx)
CAL ix = nr*Cos(ia)
CAL iy = nr*Sin(ia)
CAL iz = 0
MATRIXO ix,iy,iz
DOME n,sp,sr,1,0
CAL ia = ia + 2.0*PI/nx
CAL i = i + 1
#END

さて次に,UFOモドキを作図してみます。
// 半球作図テスト04 UFO?実行します。
#VAR
sp = 12 ;*分割数
sr = 50 ;*半球の半径
nr = 80 ;*円状半径
r1 =150 ;*スカート半径下
r2 =100 ;*スカート半径上
r3 = 20 ;*窓球半径
nm = 12 ;*窓球の数
h1 = 40 ;*スカート高さ
h2 = 80 ;*本体高さ
h3 = 60 ;*屋根高さ
i
ia
ix
iy
iz
n
w1
#DRAW
// ----- 下部 -----
CAL w1 = PI
ROXMATR w1
PEN 2
CAL ia = 0
CAL i = 0
#WHILE (i < 3)
CAL ix = nr*Cos(ia)
CAL iy = nr*Sin(ia)
CAL iz = 0
MATRIXO ix,iy,iz
DOME n,sp,sr,0,0
CAL ia = ia + 2.0*PI/3
CAL i = i + 1
#END
// ----- スカート -----
INIMATR
PEN 80
CTUBE n,sp,r1,h1, r2,0,0, 1,0,0
// ----- 本体 -----
MATRIXO 0,0,h1
PEN 81
CYLIND n,sp,r2,h2, 0,0,0
// ----- 窓 -----
PEN 4
CAL ia = 0
CAL i = 0
#WHILE (i < nm)
CAL ix = (r2-0.5*r3)*Cos(ia) // 窓球は少し中に入れます
CAL iy = (r2-0.5*r3)*Sin(ia)
CAL iz = h1 + h2/2
MATRIXO ix,iy,iz
SPHERE n,sp,r3,0
CAL ia = ia + 2.0*PI/nm
CAL i = i + 1
#END
// ----- 屋根 -----
CAL w1 = h1 + h2
MATRIXO 0,0,w1
PEN 82
CCONE n,sp,r2,h3, 0,0, 0,0

変数値はご自由に指定して下さい。
単純な3D図形でも、色々と組み合わせていくと複雑な図形を作る事は出来ると思います。まぁ、完成形に持っていかなくても、粗めに作っておいて、スケッチアップ等へデータを渡し、そちらで完成形を作る、というパターンでも良いと思います。


このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。