gpt4 book ai didi

C++:围绕某个点旋转 vector

转载 作者:IT老高 更新时间:2023-10-28 22:23:24 26 4
gpt4 key购买 nike

我正在尝试围绕 vector 上的某个点旋转 vector (在 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) 旋转

最佳答案

答案取决于您的坐标系。

计算机图形坐标系,(0,0)顶部左边

如果您使用计算机图形 vector 实现,其中 (0,0)top 左角并且您正在围绕点 (dx, dy),那么旋转计算,包括平移回原始坐标系,将是:

x_rotated =      ((x - dx) * cos(angle)) - ((dy - y) * sin(angle)) + dx
y_rotated = dy - ((dy - y) * cos(angle)) + ((x - dx) * sin(angle))

物理/数学坐标系,(0,0)底部左边

如果你使用的是更传统的现实世界坐标系,其中(0,0)左角,那么旋转计算,围绕点(dx, dy) 包括转换回原始坐标系,将是:

x_rotated = ((x - dx) * cos(angle)) - ((y - dy) * sin(angle)) + dx
y_rotated = ((x - dx) * sin(angle)) + ((y - dy) * cos(angle)) + dy

感谢 mmx他们对 Pesto 的评论的帖子,并发送至 SkeletorFromEterenia用于突出显示我的实现中的错误。

关于C++:围绕某个点旋转 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/620745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com