【HSP】回転する矩形の頂点の座標を求め、描画する【サンプル】
【HSP】回転する矩形の頂点の座標を求め、描画する【サンプル】
// モジュール
#module "kerupani_f"
// 角度を 0~2π の範囲に変換する関数
#defcfunc limit_pi double _p1
return (0.0+_p1)\(M_PI*2)+M_PI*2
#global
// ユーザー指定する変数
ddim s_pos_x,1 // 長方形の中心のX座標
ddim s_pos_y,1 // 長方形の中心のY座標
ddim s_pos_s,1 // 長方形の向き
ddim s_size_x,1 // 長方形のXサイズ
ddim s_size_y,1 // 長方形のYサイズ
// 処理に使う変数
ddim l_a,1 // 長方形の中心から頂点までの角度 (回転前)
ddim l_s,4 // 長方形の中心から頂点までの角度 (回転後)
ddim l_l,1 // 長方形の中心から頂点までの距離
dim l_x,4 // 各頂点のX座標
dim l_y,4 // 各頂点のY座標
// ユーザー指定
s_pos_x=320.0
s_pos_y=240.0
s_pos_s=0.0
s_size_x=80
s_size_y=40
// 処理
l_l=sqrt(s_size_x*s_size_x+s_size_y*s_size_y)/2
l_a=atan(s_size_y,s_size_x)
l_s=limit_pi(s_pos_s+l_a+M_PI),limit_pi(s_pos_s-l_a),limit_pi(s_pos_s+l_a),limit_pi(s_pos_s-l_a+M_PI)
l_x=int(s_pos_x+cos(l_s(0))*l_l),int(s_pos_x+cos(l_s(1))*l_l),int(s_pos_x+cos(l_s(2))*l_l),int(s_pos_x+cos(l_s(3))*l_l)
l_y=int(s_pos_y+sin(l_s(0))*l_l),int(s_pos_y+sin(l_s(1))*l_l),int(s_pos_y+sin(l_s(2))*l_l),int(s_pos_y+sin(l_s(3))*l_l)
// 表示
gsquare -1,l_x,l_y