围绕另一个点旋转一个点(2D)
发布于 2021-01-31 15:52:11
我正在尝试制作纸牌散开的纸牌游戏。现在使用具有功能的Allegro API来显示Im:
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)
{
}
谢谢
关注者
0
被浏览
47
1 个回答
-
首先减去枢轴点
(cx,cy)
,然后旋转它,然后再次添加该点。未经测试:
POINT rotate_point(float cx,float cy,float angle,POINT p) { float s = sin(angle); float c = cos(angle); // translate point back to origin: p.x -= cx; p.y -= cy; // rotate point float xnew = p.x * c - p.y * s; float ynew = p.x * s + p.y * c; // translate point back: p.x = xnew + cx; p.y = ynew + cy; return p; }
推荐阅读
-
用另一个2D数组索引NumPy 2D数组
2021-01-29 关注 0 浏览48 1答案
-
使用NumPy从另一个数组及其索引创建2D数组
2021-01-29 关注 0 浏览70 1答案
-
如何计算一个点与另一个点相距一定距离的纬度?
2021-02-02 关注 0 浏览82 1答案
-
活塞由一个止点移动到另一个止点的过程称为冲程。
2022-05-08 关注 0 浏览14 1答案
-
如何确定一个点是否在2D三角形中?
2021-01-31 关注 0 浏览78 1答案
-
将x,y点的集合与缩放,旋转,平移且缺少元素的另一个集合匹配
2021-01-29 关注 0 浏览54 1答案
-
使用两个android旋转器,一个依赖于另一个
2021-01-30 关注 0 浏览111 1答案
-
如何在 java 中检查一个 String 是否是另一个 String 的旋转?
2021-06-15 关注 0 浏览256 1答案
-
由多个较小的2D阵列组成一个大2D阵列
2021-01-29 关注 0 浏览61 1答案
-
一个JFrame打开另一个
2021-01-30 关注 0 浏览80 1答案