« HSPTV!メルマガ 第29号 | メイン | 【よみもの】こんなHSP3本が欲しいぞ~!のコーナー 1 »
2006年12月20日
【講座】「教えて!おにたま!!」
「方向転換」を作りたい!!と思っていざ作ろうとすると・・・
無理でした。いつも「マウスのいるところが正面」にする方法が
まったく思いつきません。
さらにgrotate命令の4番目のパラメータの角度指定も
いまいちわかりません。
<こたえ>
「教えて!おにたま!!」へのお便りありがとうございます(^^
画像を回転させたり、特定の方向に向かせるといった処理を
行なうためには、どうしても三角関数という要素が必要になって
きます。
三角関数と聞くとなんか難しそうに感じるかもしれませんが、
横方向(X)と縦方向(Y)の長さと、その角度をお互いに計算で
出すことができる便利な方法だと思って覚えてしまうのも手です。
HSP3で言うと、角度から長さを出すには、
横方向の長さ = sin(角度)
縦方向の長さ = cos(角度)
のように使います。(長さは-1.0から1.0の範囲で出てきます。)
逆に、長さから角度を割り出すには、
角度 = atan( 縦方向の長さ, 横方向の長さ )
となります。ここで使われる角度は、ラジアンという単位なので、
ちょっと馴染みにくいのですが、円周率(π)の値(3.14…)が
ちょうど180度になると思ってください。
grotate命令の4番目のパラメータには、このラジアンという
単位で角度を指定します。
以下のスクリプトは、マウスカーソルの方向を向かせる処理の
サンプルです。grect命令を使っていますが、角度の指定などは
grotate命令でも同じです。
screen 0,320,240
cx=160:cy=120 ; 中心のX,Y座標
repeat
redraw 0
dir=atan(cy-mousey,cx-mousex)
color 255,255,255:boxf
color 0,0,0:pos 0,0
mes "mouse=("+mousex+","+mousey+") dir="+dir
grect cx,cy,dir,100,100
redraw 1
await 20
loop
それでは、またまた。HSPに限らず、PCのコトや
プログラミング関係どんなことでもお便り待っています。
(おにたま)
投稿者 usuaji : 2006年12月20日 00:53
口臭チェッカー市場