【发布时间】:2011-01-24 08:52:39
【问题描述】:
我有一个欧几里得向量a 位于坐标(0, 1)。
我想将a 绕原点旋转 90 度(顺时针):(0, 0)。
如果我对它的工作原理有正确的理解,那么旋转后的结果 (x, y) 坐标应该是(1, 0)。
如果我将它旋转 45 度(仍然是顺时针),我会期望得到的坐标是 (0.707, 0.707)。
theta = deg2rad(angle);
cs = cos(theta);
sn = sin(theta);
x = x * cs - y * sn;
y = x * sn + y * cs;
使用上面的代码,angle 的值为 90.0 度,结果坐标为:(-1, 1)。
我真是太糊涂了。
以下链接中的示例肯定代表了上面显示的相同公式吗?
我做错了什么? 还是我误解了矢量是如何旋转的?
【问题讨论】:
-
所有变量的类型是什么?
-
双打,但答案很简单,感谢 Caspar。
-
还有——这不是逆时针吗?
标签: c++ math vector rotation trigonometry