sample_04_d3lineto.hsp

sample\d3module\sample_04_d3lineto.hsp » Plain Format

;============================================================
;                                                 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