2024年4月18日发(作者:)

旋转变换(一)旋转矩阵

1. 简介

计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换

中的基本变换包括平移、旋转、缩放、剪切这几种。本文以及接下来的几篇文章重点介绍

一下关于旋转的变换,包括二维旋转变换、三维旋转变换以及它的一些表达方式(旋转矩

阵、四元数、欧拉角等)。

2. 绕原点二维旋转

首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。

二维旋转中最简单的场景是绕着坐标原点进行的旋转,如下图所示:

如图所示点v 绕 原点旋转θ 角,得到点v’,假设 v点的坐标是(x, y) ,那么可以

推导得到 v’点的坐标(x’, y’)(设原点到v的距离是r,原点到v点的向量与x轴的夹

角是 )

x=rcosy=rsin

x′=rcos(θ+)y′=rsin(θ+)

通过三角函数展开得到

x′=rcosθcosrsinθsin

y′=rsinθcos+rcosθsin

带入x和y表达式得到

x′=xcosθysinθ

y′=xsinθ+ycosθ

写成矩阵的形式是:

[x′y′]=[cosθsinθsinθcosθ][xy]

尽管图示中仅仅表示的是旋转一个锐角θ的情形,但是我们推导中使用的是三角函数

的基本定义来计算坐标的,因此当旋转的角度是任意角度(例如大于180度,导致v’点

进入到第四象限)结论仍然是成立的。

3. 绕任意点的二维旋转

绕原点的旋转是二维旋转最基本的情况,当我们需要进行绕任意点旋转时,我们可以

把这种情况转换到绕原点的旋转,思路如下:

1. 首先将旋转点移动到原点处

2. 执行如2所描述的绕原点的旋转

3. 再将旋转点移回到原来的位置