sample_09_toge.hsp

sample\d3module\sample_09_toge.hsp » Plain Format

;============================================================
;                                                 2005/--/--
;	d3module  sample script
;	for HSP 3.0
;
;============================================================
;
; 球体描画サンプルの変化バージョンです。
; トゲトゲがうねうね動きます。
;
; このサンプルでは画像ファイル (toge.gif) からパーティクルを
; 作成しています。
;
;============================================================

#include "d3m.hsp"

	title "S.Programs d3module sample"


	; 使用するパーティクルをロード

	picload "toge.gif", 1

	;------------------------------------------------------------
	; パーティクルを初期化 (バッファ画像から読み込み)

	d3ldparticle  0,  0,  0, 0,  128, 128

	;             │  │  └┬┘ └┬─┘
	;             │  │    │     └ 読み込むサイズ (w, h)
	;             │  │    └ 読み込み元の左上位置 (x, y)
	;             │  └ 読み込み元ウィンドウ ID
	;             └ パーティクル ID
	;------------------------------------------------------------


	gmode 5, , , 128 ; パーティクルを描画するときのコピーモードを設定

	time_start = d3timer()


*mainloop

	; ループタイマー
	time = d3timer() - time_start


	; フレームレートを表示
	title "fps = " + d3getfps()


	redraw 0

	color 24, 24, 24 : boxf


	; カメラ座標を回転させる
	d3setcam cos(0.001 * time) * 2000, sin(0.001 * time) * 2000, cos(0.001 * time) * 1000


	; 球体描画
	color 128, 255, 128


	POLYS = 28 ; 球体分割数
	dh = 6.2831853 / POLYS



	; oOOo
	repeat POLYS / 2 - 1, 1

		ph = dh * cnt

		d3initlineto

		repeat POLYS
			th = dh * cnt

			x = 0
			y = 0
			z = 500 + sin(th * 8) * 70 + sin(ph + 0.004 * time) * 200

			; 座標を回転置換
			d3rotate y, z, y, z, ph
			d3rotate x, y, x, y, th

			d3particle 0, x, y, z, 50
			d3lineto  1.2 * x, 1.2 * y, 1.2 * z
			; ↑d3lineto を使用して、パーティクル描画位置からの線を描画
		loop
	loop


	redraw
	await


	goto *mainloop