HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
1207
ソラ画像の任意の地点を中心に回転させたい。2解決


ソラ

リンク

2017/12/7(Thu) 15:16:52|NO.81976

hgimg3で、画像の任意の地点を中心に回転させたいのですが、どうも上手く行きません。
角度は苦手で、ラジアンの取りうる値についても恐らくよくわかっていません。
値を確認しながら色々やってみたのですが、
左上を中心に綺麗に回転できたと思えば、右下だと上手く行かなかったりします。
既に6時間程やっていてお手上げ状態です。
もしよろしければどこに間違いがあるのか、教えていただけないでしょうか?

#include "include\\hgimg3.as" テクスチャサイズx=256 テクスチャサイズy=128 画像座標x=200.0 画像座標y=200.0 設定中心座標x=1.0;0.0~1.0で指定。画像の中心を中心に回転させる場合はそれぞれ0.5。 設定中心座標y=1.0;今回は右下を中心に回転させたい。 x1=設定中心座標x*テクスチャサイズx y1=設定中心座標y*テクスチャサイズy x2=0.5*テクスチャサイズx y2=0.5*テクスチャサイズy 中心距離=absf(sqrt( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) ));画像の中心と設定した中心との距離 中心角度=atan(x1-x2,y1-y2);画像の中心と設定した中心との角度 screen 0,1280,720 hgini buffer 1,テクスチャサイズx,テクスチャサイズy line 0,0,テクスチャサイズx,テクスチャサイズy line 0,テクスチャサイズy,テクスチャサイズx,0 line 10,10,テクスチャサイズx-10,10 settex テクスチャサイズx,テクスチャサイズy,0,-1 tex_id=stat gsel 0 addspr model_id,0,0,0,テクスチャサイズx,テクスチャサイズy,tex_id regobj obj_id,model_id repeat 画像角度=deg2rad(cnt);ラジアン ;ここらへんがよくわからない。 cos_=cos(画像角度-中心角度) sin_=sin(画像角度-中心角度) posx=画像座標x+cos_*中心距離 posy=画像座標y+sin_*中心距離 setpos obj_id,posx,posy setang obj_id,x,y,画像角度 hgdraw:hgsync 16;更新 title "中心角度:"+中心角度+" cos:"+cos_+" sin:"+cos_+"" loop



この記事に返信する


黒猫

リンク

2017/12/7(Thu) 22:41:12|NO.81980

posx=画像座標x+cos_*中心距離
posy=画像座標y+sin_*中心距離

posx=画像座標x+sin_*中心距離
posy=画像座標y-cos_*中心距離
に変えればいいです。

サインやコサインの符号には注意してください。
(画像角度-中心角度)がゼロのとき(sin_=0 cos_=1)
画像は回転中心の上側にあるはずだから、x成分はゼロに、y成分はマイナスになります。

(画像角度-中心角度)がプラスのとき、画像が時計回りに回るなら、x成分はプラスになります。



ソラ

リンク

2017/12/7(Thu) 23:09:55|NO.81981

>>黒猫さん
sinとcosが逆でy軸はマイナスにしなきゃいけないんですね・・・
メインのプログラムで試した所、上手くいきました。
本当に助かりました、この質問は解決とさせて頂きます。



ONION software Copyright 1997-2023(c) All rights reserved.