旋转坐标,就像是在画布上画个圈,要么转个身,让东西跟着变了方向。小时候学画画,老师总说“转个身”,实际上这就是个旋转难题。
不过数学里,旋转讲究的是严谨,要把坐标轴彻底翻个身,把点的坐标给推出去。大量人一启动就急着背公式,认定那是死记硬背,结局一做题就懵了:哎?
如何一横坐标增添?
如何一纵坐标增添?那会儿可能认定是数数,目前得想几何意义。 实际上,向量旋转那套逻辑,核心就在那句“点乘(数量积)等于模长乘上两个向量夹角的余弦”。
这玩意儿听着挺玄乎,但实际上理解透了,旋转就顺了。想象一下,你手里拿着一个箭头,想让它歪个角度。你不需求把它整体翻个面,只需求把它伸出去一局部,要么缩进去一点,方向就变了。旋转后的坐标实际上就是原来坐标伸出去的那局部,要么缩进去的那局部。 为了讲清楚,咱们不整那些虚头巴脑的铺垫,直接从最好办的直觉出发。假设我们有一个标准单位圆,那圆心上有个点,我们让点围绕圆心转一圈。转的时候,离圆心的距离不变,但角度变了。
这时候,点到了哪儿,实际上就是它伸出去的长度变了。伸出去多了,坐标就大;缩进去了,坐标就小。
故此,旋转实际上就是一次好办的伸缩操作。 举个例子,咱们看一个具体的场景。想象一个向量,起点在原点,终点在 (3, 4)。
这也就是直角坐标系里,横轴走 3 格,纵轴走 4 格的点。目前我们要把它逆时针旋转 90 度。
这时候,你会发现它原来伸出去的水平局部(3)变成了垂直向上的局部,原来伸出去的垂直局部(4)变成了水平向右的局部。
故此,新的坐标就是 (4, 3) 了。 再换一种角度,顺时针转 90 度。
这时候,原来的水平局部(3)变成了垂直向下的局部,原来的垂直局部(4)变成了水平向右的局部。结局坐标就变成了 (-4, 3)。 这就涉及到一个细节,那会儿大量人认定旋转算的是四个象限。
实际上转了 90 度,原本在第一象限的点,转那会儿就到了第四象限。
这时候,横坐标和纵坐标的符号就反了。
这是一般的规律,但要注意,这仅针对 90 度的好办旋转。
要是转 180 度,那就是两个负号;转 270 度呢,那就是一个正一个负。 这时候可能有人想:反正坐标变换公式如此复杂,能不能直接套公式算?确实,旋转矩阵是个标准公式,但大量人一看到矩阵就头疼。
实际上不用硬套矩阵,只要记住“伸出去的长度”这个核心思想,就能推导出公式。 如何推导?咱们看那个伸出去的长度。
原来向量是 $(x, y)$。逆时针转 90 度后,新的向量实际上是把原向量向右延伸 $x$ 的长度,向上延伸 $y$ 的长度。
这就构成了新的起点,坐标是 $(x, y)$ 加上 $(x, y)$,也就是 $(2x, 2y)$?不对,这是错位了。 重新理一下逻辑。旋转矩阵的视觉效果,实际上是转变了“横向”和“纵向”的权重。原横向的分量,在旋转后变成了“纵向”的分量;原纵向的分量,在旋转后变成了“横向”的分量。
故此,新坐标的横向($x'$)实际上是由原纵向分量拍板的,新坐标的纵向($y'$)实际上是由原横向分量拍板的。 套用公式看,逆时针旋转 90 度的变换矩阵是 $begin{pmatrix} 0 & 1 \ -1 & 0 end{pmatrix}$。乘以原来的向量 $begin{pmatrix} x \ y end{pmatrix}$,拿到 $begin{pmatrix} x \ y end{pmatrix} begin{pmatrix} 0 & 1 \ -1 & 0 end{pmatrix} = begin{pmatrix} 0x + 1y \ -1x + 0y end{pmatrix} = begin{pmatrix} y \ -x end{pmatrix}$。
故此逆时针转 90 度,坐标就是 $(y, -x)$。 那顺时针呢?顺时针转 90 度,相当于逆时针转 270 度,矩阵是 $begin{pmatrix} 0 & -1 \ 1 & 0 end{pmatrix}$。乘以向量 $begin{pmatrix} x \ y end{pmatrix}$,拿到 $begin{pmatrix} 0x + (-1)y \ 1x + 0y end{pmatrix} = begin{pmatrix} -y \ x end{pmatrix}$。
故此顺时针转 90 度,坐标就是 $(-y, x)$。 这就说得通了。旋转本质上就是“换并带符号”。 那能不能更直观一点,不用矩阵,只用几何意义?旋转实际上就像是在一个坐标系里,把一条线绕着原点转圈圈。转 90 度,原来的 X 轴变成了 Y 轴,Y 轴变成了 -X 轴(逆时针)要么 X 轴(顺时针)。 咱们再拿一个具体的数据来看看,撇脱理解。假设有一个向量,从原点出发,指向 $(5, 5)$。
这也就是对角线方向,两条轴的分量一样,都是 5。 目前把它逆时针旋转 45 度。
这时候,原来的 X 轴分量 (5) 变成了垂直向上的分量,原来的 Y 轴分量 (5) 变成了水平向右的分量。根据前面的推导,逆时针转 90 度是 $(y, -x)$,那再转 45 度呢?实际上不用转如此多次,直接套旋转 90 度的公式,再套旋转 90 度,要么直接用斜率理解。 实际上有个更好办的办法。旋转后的向量,它的长度和原来一样。
原来的向量长度 $sqrt{5^2 + 5^2} = sqrt{50} approx 7.07$。旋转后的向量,横纵坐标的平方和要是 50。 要是是逆时针转 90 度,公式是 $(y, -x)$。代入 $(5, 5)$,拿到 $(5, -5)$。
这长度也是 $sqrt{50}$,对的。 要是是顺时针转 90 度,公式是 $(-y, x)$。代入 $(5, 5)$,拿到 $(-5, 5)$。长度也对。 那要是是其他角度呢?比如转 30 度。
这时候坐标变换就不是好办的 $(y, -x)$ 了,需求用到旋转矩阵的余弦和正弦值。公式里就多了个 $cos(30^circ)$ 和 $sin(30^circ)$。
这时候数学就变复杂了,但原理还是那个原理:原来的分量,一局部变成了目前的横坐标,一局部变成了目前的纵坐标。 大量人好办犯的毛病,就是认定旋转就是坐标互换。
实际上不然。互换只是特殊角度(90 度的倍数)下的效果。
一般/平平角度,坐标互换的与此同时,还会伴随符号的变化。
比如转 30 度,原来的横坐标局部,不是直接成了纵坐标,而是乘上了 $cos(30^circ)$ 加上原有的 $sin(30^circ)$。 还有,关于旋转的方向。逆时针是数学惯例,也是钟表转的方向。顺时针就是反着转。
这会影响符号。
比如逆时针转 90 度,$(x, y)$ 变成 $(y, -x)$。
注意那个负号。
要是写成顺时针,就是 $(x, y)$ 变成 $(-y, x)$。
这个负号挺关键,不能搞反。 再举个极端例子。
要是向量沿着 X 轴正方向,坐标是 $(10, 0)$。逆时针转 90 度,它应当去 Y 轴正方向,坐标变成 $(0, 10)$。公式 $(y, -x)$ 代入:$(0, -10)$?
什么的,这里出难题了。 哦,看错了。$(x, y) = (10, 0)$。
要是是逆时针转 90 度,应当是 $(0, 10)$。公式 $(y, -x)$ 算出来是 $(0, -10)$。
这说明我的公式推导要么代入有难题,要么理解的方向反了。 重新推导一遍。向量 $vec{v} = (x, y)$。逆时针旋转 $theta$ 度后的向量 $vec{v}'$。 根据三角函数定义,新的横坐标是原长度乘以 $cos(theta)$,再减去原纵分量乘以 $sin(theta)$ 的反之数?不对,是原长乘以 $cos(theta)$,再减去原长乘以 $sin(theta)$ 的反之数,也就是 $xcostheta + ysintheta$ 是点乘第一列。 标准的旋转矩阵(逆时针)是: $x' = xcostheta - ysintheta$ $y' = xsintheta + ycostheta$ 验算一下 $(10, 0)$ 逆时针 90 度。$theta=90$。$cos90=0, sin90=1$。 $x' = 100 - 01 = 0$ $y' = 101 + 00 = 10$ 结局 $(0, 10)$。
对了。 那刚刚代入公式 $(y, -x)$ 哪儿错了?那是针对 90 度旋转的。
要是是 90 度旋转,矩阵是 $begin{pmatrix} 0 & -1 \ 1 & 0 end{pmatrix}$ 吗?不对,逆时针 90 度矩阵应当是 $begin{pmatrix} 0 & -1 \ 1 & 0 end{pmatrix}$?试一下:$begin{pmatrix} 0 & -1 \ 1 & 0 end{pmatrix} begin{pmatrix} 10 \ 0 end{pmatrix} = begin{pmatrix} 0 \ 10 end{pmatrix}$。对上了。 那之前的 $(y, -x)$ 推导哪儿错了?那是把矩阵搞混了。之前的推导里,矩阵是 $begin{pmatrix} 0 & 1 \ -1 & 0 end{pmatrix}$,算出来是 $(y, -x)$。
这说明矩阵列向量要么行向量搞反了,要么定义反了。 不管矩阵如何搞,核心逻辑是:旋转实际上就是坐标系的“对调”加上“标号”的转变。 对于 90 度逆时针旋转,原来的横坐标 $x$,在旋转后,变成了负的纵坐标 $-y$(出于要向下翻转一“下”角)。
原来的纵坐标 $y$,变成了正的横坐标 $x$(出于要向右延伸一“右”角)。 故此逆时针 90 度:$(x, y) to (y, -x)$。 验算:$(10, 0) to (0, -10)$。
不对,逆时针应当是 $(0, 10)$。 啊,这里逻辑通了。逆时针转,向量是往“左上”要么“右上”走。从 $(10, 0)$ 出发,逆时针转 90 度,应当指向 $y$ 轴正方向。也就是 $(0, 10)$。 公式 $(y, -x)$ 算出来 $(0, -10)$,指向 $y$ 轴负方向,这是顺时针。 故此公式 $(y, -x)$ 对应的是顺时针 90 度。 公式 $(-y, x)$ 对应的是逆时针 90 度。 验算:$(10, 0) to (-0, 10) = (0, 10)$。
对了。 这就解释清楚为啥会有符号变化了。逆时针转,原来的“向上”分量变成了“向左”分量(负),原来的“向右”分量变成了“向上”分量(正)。 那总结一下,旋转坐标的公式,实际上就是坐标系的“换装”。 逆时针 90 度:横坐标 = 原纵坐标,纵坐标 = - 原横坐标。 顺时针 90 度:横坐标 = - 原纵坐标,纵坐标 = 原横坐标。 其他角度,比如 30 度,就是要把原坐标里的分量,分别乘以 $cos(30)$ 和 $sin(30)$,然后把 $sin$ 和 $cos$ 的角色互换。 这样讲,是不是比背公式好多了?关键是理解“分量换”和“分量标号”这两点。 再想想有没有啥特殊情况。
比如零向量。零向量转那会儿还是零向量,公式照样适用。原点呢?原点转那会儿还是原点,公式适用。 还有,旋转实际上是可逆的。逆时针转 90 度,顺时针转 -90 度(也就是逆时针 270 度)就能变回来。从 $(y, -x)$ 经过顺时针变回 $(x, y)$,逻辑上也自洽。 最终,关于应用。旋转坐标在哪些地方有用呢?物理里的力矩,工程里的机械设计,计算机图形学里的动画效果。
比如画动画,人物头跟着盘子转,盘子在平面上转,最终得出盘子上的手、盘子、头各自的坐标(经过旋转矩阵变换)。 故此说,
向量旋转坐标公式,实际上就是把向量在平面上的“位置”通过数学语言描述出来,转变的是它的朝向。核心就是坐标轴之间的夹角变化,还有点在这组新坐标轴下的投影。投影变了,坐标就变了。 希望这个解释能帮你把公式和几何意义串联起来,不再认定那些系数是毫无意义的数字,而是实实在在分量变化的结局。