3D中沿任意方向缩放

作者:追风剑情 发布于:2018-7-23 20:53 分类:计算机图形学

      我们可以不依赖坐标系而沿任意方向进行缩放。设n为平行于缩放方向的单位向量,k为缩放因子,缩放沿穿过原点并平行于n的直线(2D中)或平面(3D中)进行。

      我们需要推导出一个表达式,给定向量v,可以通过v,n和k来计算v'。为了做到这一点,将v分解为两个分量,v∥和v⊥,分别平行于n和垂直于n,并满足v=v∥+v⊥。v∥是v在n上的投影,由(v●n)n可以得到v∥。因为v⊥垂直于n,它不会被缩放操作影响。因此,v'=v∥'+v⊥,剩下的问题就是怎样得到v∥'。由于v∥平行于缩放方向,v∥'可由公式kv∥得出。如图所示:

1111.png

222.png

既然已经知道了怎样对任意向量进行缩放,当然也就可以据此计算缩放后的基向量。这里列出2D中的一个基向量的求法,基余的基向量依此类推。(注意下面采取列向量形式只是为了使等式形式好看一些)

333.png

4444.png

通过基向量构造矩阵,得到以单位向量n为缩放方向,k为因子的缩放矩阵,如图

555.png

3D中基向量为:

666.png

777.png

888.png

以单位向量n为缩放方向,k为因子的3D缩放矩阵公式为:

9999.png

标签: 计算机图形学

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号