有一个公式可以将向量旋转一个角度:
Vector vector(x, y)
Angel angle
rotatedX = x * cos(angle) - y * sin(angle)
rotatedY = x * sin(angle) + y * cos(angle)
我不太明白这样的公式是如何出现的。为什么 X 减去正弦和 Y 的乘积,而 Y 相加?
有一个公式可以将向量旋转一个角度:
Vector vector(x, y)
Angel angle
rotatedX = x * cos(angle) - y * sin(angle)
rotatedY = x * sin(angle) + y * cos(angle)
我不太明白这样的公式是如何出现的。为什么 X 减去正弦和 Y 的乘积,而 Y 相加?
是的,一切都很简单......看图片。x' 和 y' 在旋转角度 α 的坐标系中。
方程写在右边。展开三角函数-余弦和正弦之差,代入第一个和第三个方程的正弦和余弦β的值。因此,您会得到将一个坐标系和另一个坐标系中的坐标相关联的方程式...
这里的一切都很简单。首先,考虑一个更简单的问题:相对于横坐标轴旋转角度 α 的单位向量的坐标是多少?答案:(cos α,sin α)。这几乎就是余弦和正弦的定义。
什么是坐标?这些是向量在基方面展开的系数:
r = i cos α + j sin α
这里r是所需的向量,i和j是基向量。
因此,在正交基中旋转基向量非常容易。
现在请记住,我们需要旋转的不是基向量,而是指定的向量。让我们用字母v来表示它。所以,转动它很简单:你需要把它变成基本的!更确切地说,有必要在它的参与下构建一个标准正交基。毕竟,平面中的正交基只是两个相同长度的垂直向量,而我们已经有了其中一个。
要找到第二个向量,您需要将向量v旋转90 度。这比旋转任意角度要容易得多:
如您所见,如果向量v的坐标为 (x, y),则垂直向量u的坐标将为 (-y, x)。您可以自己检查 - 这适用于任何象限。再次注意坐标的不同符号:从这里开始,您感兴趣的差异将在未来出现。
因此,我们有一个正交基,如果有旋转基向量的公式,我们需要旋转它:
一切似乎都准备好了回应。我们得到向量形式的公式:
r = v cos α + u sin α
现在让我们替换两个向量的坐标并...
r x \u003d x cos α - y sin α
r y = y cos α + x sin α