sample_03_basic.hsp

sample\d3module\sample_03_basic.hsp » Plain Format

;============================================================
;                                                 2005/--/--
;	d3module  sample script
;	for HSP 3.0
;
;============================================================
;
; 基本的な機能のサンプルです。
;
; カメラ座標とカメラターゲットの座標が動きます。
;
;============================================================

#include "d3m.hsp"

	title "S.Programs d3module sample"


#define MAX 16

	ddim x, MAX
	ddim y, MAX
	ddim z, MAX

	repeat
		redraw 0
		color 255, 255, 255 : boxf


		; ボックスの座標を生成
		ct = cnt
		randomize 0

		repeat MAX
			x(cnt) = cos( 0.002 * (rnd(10) + 10) * ct ) * 600
			y(cnt) = sin( 0.002 * (rnd(10) + 10) * ct ) * 600
			z(cnt) = sin( 0.002 * (rnd(10) + 10) * ct ) * 60
		loop



		; カメラ座標設定 (自動切換え)
		if (cnt / 150) & 1 {

			; 移動カメラ
			d3setcam x, y, z,  x(1), y(1), z(1)

		} else {

			; ふかんカメラ
			d3setcam cos(0.01 * ct) * 1500, sin(0.01 * ct) * 1500, 1000
		}



		; 座標平面描画
		color 64, 192, 64

		repeat 31
			a = cnt * 2000 / 30 - 1000
			d3line a, 1000, 0,  a, -1000, 0
			d3line 1000, a, 0,  -1000, a, 0
		loop



		; 座標軸描画
		color 32, 128, 32

		d3mes "X",  2200, 0, 0
		d3mes "Y",  0, 2200, 0
		d3mes "Z",  0, 0, 1100

		d3arrow 2000, 0, 0,  -2000, 0, 0 ; x
		d3arrow 0, 2000, 0,  0, -2000, 0 ; y
		d3arrow 0, 0, 1000,  0, 0, -1000 ; z



		; ボックスを描画
		color , , 255
		r = 30
		repeat MAX
			d3box x(cnt) - r, y(cnt) - r, z(cnt) - r, x(cnt) + r, y(cnt) + r, z(cnt) + r
		loop



		; 箱 0 (カメラ位置) を円で囲む
		color , , 128
		d3circle x(0), y(0), z(0),  100



		; 箱 1 (ターゲット座標) を円で囲む
		color 128
		d3circle x(1), y(1), z(1),  100



		redraw
		await 30

	loop