当前位置:  开发笔记 > 编程语言 > 正文

C++:围绕某个点旋转矢量

如何解决《C++:围绕某个点旋转矢量》经验,为你挑选了2个好方法。

我试图围绕向量上的某个点旋转向量(在C++中):

1 2 3
4 5 6
7 8 9

围绕点(1,1)(即"5")旋转90度会导致:

7 4 1
8 5 2
9 6 3

现在我正在使用:

x = (x * cos(90)) - (y * sin(90))
y = (y * cos(90)) + (x * sin(90))

但我不想让它旋转(0,0)



1> Mark Booth..:

正如Mehrdad Afshari评论Pesto的帖子,包括翻译回原始坐标系统将是:

x_rotated = ((x - x_origin) * cos(angle)) - ((y_origin - y) * sin(angle)) + x_origin
y_rotated = ((y_origin - y) * cos(angle)) - ((x - x_origin) * sin(angle)) + y_origin



2> Mehrdad Afsh..:

解决方案是将矢量转换为旋转中心为(0,0)的坐标系.应用旋转矩阵并将矢量转换回原始坐标系.

dx = x of rotation center  
dy = y of rotation center

V2 = V - [dx, dy, 0]  
V3 = V2 * rotation matrix  
Result = V3 + [dx, dy, 0]

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有