振り子で縄などを表現しようと思っています。
カーソルキーで振り子の支点を動かし、推進力でふらせたいのですが
なにかいい方法はないでしょうか。
#include "hspmath.as"
ddim Px,2
ddim Py,2
ddim Px2,2
ddim Py2,2
font "",20
PX=100.0
PY=100.0
NAGASA=100.0
angle_v = 0.0; //角速度
constant = 1.0*9.8/NAGASA; //質量×重力÷長さ
rotation = 90.0;
NAGASA.1=150.0
angle_v.1 = 0.0; //角速度
constant.1 = 1.0*9.8/NAGASA.1; //質量×重力÷長さ
rotation.1 = 90.0;
//////////////////////////
repeat
;画面再描画OFF
redraw 0
;画面クリア
color 255,255,255 : boxf
;色を戻す
color 0,0,0
;キー入力
stick key,15
speed=5.0
if key&1 : PX-=speed
if key&4 : PX+=speed
if key&2 : PY-=speed
if key&8 : PY+=speed
repeat 2
px.1=px2.0
py.1=py2.0
a.cnt = -constant.cnt*sin((rotation.cnt)*3.141592/180.0);
angle_v.cnt += a.cnt
//徐々に減衰させるには、下のコメントはずす
angle_v.cnt *= 0.96
rotation.cnt += angle_v.cnt
pos 0,cnt*50
mes "角度"+rotation.cnt
;位置設定 XにsinをYにcosを使います。
;その際に「度」を渡さずに「ラジアン」で渡します。
rad.cnt = deg2rad(270+rotation.cnt)
PX2.cnt=(cos(rad.cnt)*NAGASA.cnt)+PX.cnt
PY2.cnt=(sin(rad.cnt)*-NAGASA.cnt)+PY.cnt
line PX.cnt,PY.cnt,PX2.cnt,PY2.cnt
pos PX2.cnt-10,PY2.cnt-10
;文字表示
mes "○"
loop
;画面再描画ON
redraw 1
wait 1
loop