我正在尝试制作纸牌游戏,其中纸牌呈扇形散开。现在要显示它,我使用具有以下功能的 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)
{
}
谢谢
原文由 jmasterx 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先减去枢轴点
(cx,cy)
,然后旋转它(逆时针方向),然后再次添加该点。未经测试: