Eri*_*ede 15 c++ vector rotation
我试图围绕向量上的某个点旋转向量(在C++中):
1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)
围绕点(1,1)(即"5")旋转90度会导致:
7 4 1
8 5 2
9 6 3
Run Code Online (Sandbox Code Playgroud)
现在我正在使用:
x = (x * cos(90)) - (y * sin(90))
y = (y * cos(90)) + (x * sin(90))
Run Code Online (Sandbox Code Playgroud)
但我不想让它旋转(0,0)
Mar*_*oth 27
正如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
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 11
解决方案是将矢量转换为旋转中心为(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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47030 次 |
| 最近记录: |