圍繞另一個點旋轉一個點(2D)我正在嘗試制作紙牌游戲?,F在顯示它我使用Allegro API,它具有以下功能:al_draw_rotated_bitmap(OBJECT_TO_ROTATE,CENTER_X,CENTER_Y,X ,Y,DEGREES_TO_ROTATE_IN_RADIANS);所以有了這個,我可以輕松地讓我的粉絲效果。問題在于知道哪個卡在鼠標下面。為此,我想到做多邊形碰撞測試。我只是不確定如何旋轉卡上的4個點來構成多邊形。我基本上需要和Allegro做同樣的操作。例如,卡的4個點是:card.x
card.y
card.x + card.width
card.y + card.height我需要一個像以下的功能:POINT rotate_point(float cx,float cy,float angle,POINT p){}謝謝
3 回答

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
float s = sin(angle); // angle is in radians
float c = cos(angle); // angle is in radians
順時針旋轉:
float xnew = p.x * c + p.y * s;
float ynew = -p.x * s + p.y * c;
對于逆時針旋轉:
float xnew = p.x * c - p.y * s;
float ynew = p.x * s + p.y * c;
添加回答
舉報
0/150
提交
取消