为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2019-08-12 10:18:59
围绕另一个点旋转一个点(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;


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 828 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信