【HSP】回転する矩形の頂点の座標を求め、描画する【サンプル】

【HSP】回転する矩形の頂点の座標を求め、描画する【サンプル】

STG用のへにょりレーザーを作成するには、矩形を回転させ、それから若干補正を入れる必要があります。
しかし。HSPのgrotate命令だと、回転のみしかできないため、変形させるためにはgsquare命令のほうを使う必要があります。
そこで、回転する矩形の頂点の座標を求め、基本的な形を出したうえで修正を加えて表示、とすればへにょりレーザーができると思います。
今回は、とりあえずその「頂点の座標を求める」所までやります。ちょっとづつ作らないとよくミスするので…orz
・矩形の中心から頂点の距離を求める
・矩形の中心から頂点の角度を、座標から求める
・実際に表示したい角度に変えてから座標に戻す
とりあえず私はこうやりました。

// モジュール
#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

これを使って、レーザーを細かく分けて、ひとつひとつを表示…の前に、隙間ができないように座標を補正。
それから全部表示…でいけるはず…。
いけなかったらごめんなさい。現在、作成中なもんで…。
ではまたいつかお会いしましょう。
↓クリックおねがいします~