围绕另一个点旋转一个点(2D)我正在尝试制作纸牌游戏。现在显示它我使用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
提交
取消