围绕另一个点旋转一个点(2D)

围绕另一个点旋转一个点(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){}

谢谢


潇湘沐
浏览 798回答 3
3回答

桃花长相依

float s = sin(angle); // angle is in radiansfloat 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;
打开App,查看更多内容
随时随地看视频慕课网APP