ページ 1 / 1
2Dの矩形を回転させる時に好きな座標を基準に回転させたい
Posted: 2016年3月04日(金) 18:58
by H.MAI
2Dで表示された矩形を回転させる時に現在使っているライブラリだと矩形の中心を基準に回転してしまいます。
これを好きな座標を基準に回転した結果と同じになるように矩形の表示座標(x,y矩形の左上)を設定し直したいです。
現在使っているライブラリから設定、取得できる値は、角度angleと座標を表すx,yです。
流れとしては以下のような感じです。
コード:
set_obj_position(100, 100);
set_obj_rotation(45); //オブジェクトの中心を基準に45°回転
//このままだと普通に矩形(オブジェクト)の中心で回転しただけなので
//例えば矩形の左上(100, 100)を基準に回転した結果と同じになるように
//矩形の座標(x,y)を再設定したい。
set_obj_position(?,?)
矩形のangleとx,yの情報のみしか扱えないですがこれで可能でしょうか?
ご教示の方宜しくお願いいたします。
Re: 2Dの矩形を回転させる時に好きな座標を基準に回転させたい
Posted: 2016年3月04日(金) 19:24
by usao
>これを好きな座標を基準に回転した結果と同じになるように矩形の表示座標(x,y矩形の左上)を設定し直したいです。
「好きな座標」(x,y)が,そのライブラリでの回転によって(x',y')に行ってしまうという計算を自前で行い,
(x',y')が(x,y)にくるように位置をオフセットすれば良いように思います.
Re: 2Dの矩形を回転させる時に好きな座標を基準に回転させたい
Posted: 2016年3月04日(金) 19:28
by みけCAT
矩形の幅や高さが取得できないと、難しいかもしれません。
Re: 2Dの矩形を回転させる時に好きな座標を基準に回転させたい
Posted: 2016年3月04日(金) 19:43
by H.MAI
返信ありがとうございます。
>>usaoさん
なるほど。そうですね!
ただ具体的な計算方法が…
自分でも考えてみますね!
>>みけCAT
言い忘れてました!
矩形の幅や高さは取得できるのでした。
すみません。
Re: 2Dの矩形を回転させる時に好きな座標を基準に回転させたい
Posted: 2016年3月04日(金) 21:36
by usao
>ただ具体的な計算方法が…
回転行列とかで検索すればすぐに見つかるかと思います.
Re: 2Dの矩形を回転させる時に好きな座標を基準に回転させたい
Posted: 2016年3月04日(金) 22:25
by H.MAI
回転行列とかで検索すればすぐに見つかるかと思います.[/quote]
ありがとうございます!あとは調べて自分でがんばります!
Re: 2Dの矩形を回転させる時に好きな座標を基準に回転させたい
Posted: 2016年3月05日(土) 02:16
by H.MAI
こんな感じで実現できました!ありがとうございました!!
コード:
float objX = 100; //オブジェクトX
float objY = 100; //オブジェクトY
float rotX = 100; //回転基準X
float rotY = 100; //回転基準Y
float W = 50; //幅
float H = 50; //高さ
float x = objX - (rotX - (W/2));
float y = objY - (rotY - (H/2));
float angle = 45;
float Cos = cos(angle*RAD);
float Sin = sin(angle*RAD);
//移動
set_obj_position((x*Cos - y*Sin) + rotX, (x*Sin + y*Cos) + rotY);
//回転
set_obj_rotation(angle);