;============================================================ ; 2005/--/-- ; d3module sample script ; for HSP 3.0 ; ;============================================================ ; ; d3lineto で 14 面体 (truncated cube) を描画するサンプルです。 ; ; 整数配列 objx, objy, objz に格納された座標値を d3lineto ; 命令で再生しています。 ; ; 多数の連続する線分の描画は、d3line 命令よりも d3lineto ; 命令を使ったほうが記述が簡潔で、高速になります。 ; ; d3lineto 命令で連続線を描画する前には、d3initlineto 命令で ; 初期化を行う必要があります。 ; d3initlineto 命令実行直後の d3lineto 命令は開始点の ; 指定となり、線は描画されないことに注意してください。 ; ;============================================================ #include "d3m.hsp" title "S.Programs d3module sample" ; truncated cube r = 500 objx = 0, r, 0, r, r, r, 0, -r, 0, -r, -r, -r, 0, r, 0, r, r, r, 0, -r, 0, -r, -r, -r, 0 objy = r, r, r, 0, r, 0, r, r, r, 0, r, 0, -r, -r, -r, 0, -r, 0, -r, -r, -r, 0, -r, 0, r objz = r, 0, -r, -r, 0, r, r, 0, -r, -r, 0, r, r, 0, -r, -r, 0, r, r, 0, -r, -r, 0, r, r *mainloop ct++ redraw 0 color 255, 255, 255 boxf ; カメラ座標を回転させる d3setcam cos(0.04 * ct) * 2000, sin(0.04 * ct) * 2000, cos(0.03 * ct) * 1000 ; 座標軸表示 color 128, 128, 128 d3mes "X", 1100, 0, 0 d3mes "Y", 0, 1100, 0 d3mes "Z", 0, 0, 1100 d3arrow 1000, 0, 0, -1000, 0, 0 ; x d3arrow 0, 1000, 0, 0, -1000, 0 ; y d3arrow 0, 0, 1000, 0, 0, -1000 ; z ; truncated cube を描画 color , , 255 ;------------------------------------------------------------ ; d3lineto 命令使用前の初期化 d3initlineto ;------------------------------------------------------------ ; objx, objy, objz の座標値を順に描画 repeat 25 ;------------------------------------------------------------ ; 連続する線を描画 d3lineto objx(cnt), objy(cnt), objz(cnt) ; └──┬───────────┘ ; └ 描画先の線端の位置 (x, y, z) ;------------------------------------------------------------ loop redraw await 30 goto *mainloop