《COMPLETE MAYA PRO GRAMMIN G VOLUME II》2.顶点(理论部分)

2.顶点

顶点和向量在图形学中可以说是构建物体的基础,但是在了解maya中点和向量的独特之处之前,我们得先了解他们在数学上的一些基础知识。

2.1大小

对于顶点而言,它的大小指的就是就是坐标的数字。Maya并没有直接提供2维的顶点或者向量,不过使用3维的顶点和向量也能达到同样目的。Maya在mel中提供了3维顶点,在c++api中提供了4维顶点(齐次坐标点)

2.2笛卡尔坐标系

一个三维笛卡尔坐标系中的点用下面这种方法来表示:

 

p = (x, y, z)

 

笛卡尔坐标系一般吧(0,0,0)z作为坐标系原点,每一个坐标系都是由以圆点作为起点的轴来组成的,而每个坐标系就是由多个相互垂直的坐标轴构成,并以此来准确地表示顶点。

对于一个3维顶点,坐标系会以x(1,0,0)y(0,1,0)z(0,0,1)三轴组成。图2.1展示了如何在3维笛卡尔坐标系中表示(3.4.1)。这个点相当于从原地出发,在x轴上移动3个长度单位,然后在y轴移动4个单位长度,最后再z轴移动一个单位。这就是最后我们想要得到的点。


2.3 齐次坐标

一个顶点也可以在齐次坐标系中表示,一个顶点由4个参数表示,如下:

P = (x,y,z,w)

这个表示方法中w分量你可以理解为为坐标提供了一个缩放点(译:齐次坐标在图形学中很重要啊)如果xyz不变的情况下,通过微调z点就能得到一系列在同一直线上的的点,这条线穿过原点和点(x,y,z),齐次坐标在投影计算十分有用,比如在3维坐标转化为2维坐标,尤其是在透视投影中,把一个点投影到平面上,由此来最终获得一个2维的平面图像。

也有另外一种坐标系在顶点的旋转中非常有用,我们会在transform部分再来讨论它。

 

2.4极坐标系

一个2维的点可以用以下的方式在极坐标系中标识。

P = (r,θ)

r的顶点从原点出发,希腊字母θ是x轴进行旋转之后的角度(弧度角)。(可以在4.1了解角度和角度单位的详细内容)方向是逆时针的,图2.2就表现了一个极坐标系中的一个点(1.5,0.78)。0.78的45度转化为弧度角的结果。(译:r称之为极径,θ称之为极角)


对于三维点也有类似的方法(译:球坐标系),但是需要一个附加的角度——Ф(弧度角)。

P = (r,Ф,θ)

这个点位于半径为r的球上,θ角指定在z轴和x轴之间,Ф角从z轴出发逆时针旋转。2.3展示了在极坐标系中的3维顶点(1,0.78,0.78),注意纵轴为z轴。

最后的顶点构建如下。从z轴出发,距离为r。在y轴上旋转Ф度角。此时,顶点在x-z平面上,沿着z轴旋转θ角,获得的顶点就是我们需要的顶点。

θ角在0到π之间(即0到180°)Ф角在0到π/2之间(0到90°)

 

2.5转化

接下来我们来讨论如何在各式各样的表示方式之间转化。

2.5.1 笛卡尔坐标系转化为齐次坐标

任何一个n维顶点可以通过用一个标量与各个坐标相乘来得到一个n+1维的坐标。这个第n+1的坐标值就是这个标量。因此就可以把三维顶点p =(x,y,z)转化为4维齐次坐标

P’ = (x’,y’,z’,w)

原坐标乘以了一个标量,很显然,这个标量是1.

p’ = (1*x,1*y,1*z,1) = (x’,y’,z’,1)

2.5.2 齐次坐标转化为笛卡尔坐标

想要把齐次坐标系中的顶点转化回笛卡尔坐标,只需要反向操作,所有的坐标都除以最后的坐标w。

P = (x/w,y/w,z/w,w/w) = (x,y,z,1) = (x,y,z)

使用这个公式的时候要注意一点:w不能为0,这将会造成除数为0的错误。如果w = 0那么它直接转化为0向量。

2.5.3 笛卡尔坐标系转化为极坐标系

因为极坐标系只有两个坐标值,所以z坐标值会被忽略。把一个笛卡尔坐标p = (x,y,z)转化为极坐标,其r坐标(极径)可以由定点到原点的距离而求得。角度就是y和x的arctan


 

2.5.4 极坐标转化为笛卡尔坐标

极坐标P= (r, θ) 只需要用下面的让让就能转化为笛卡尔坐标:

P’ = (x,y,z) = (r cos(θ),r sin(θ),0)

 

2.5.5 笛卡尔坐标系转化为球坐标系

对于一个笛卡尔坐标p = (x,y,z)用下面的方法就能转化为球坐标

P’ =(r,Ф,θ)

2.5.6球坐标转化为笛卡尔坐标

对于一个球坐标P =(r,Ф,θ)可以用下面的方法转化为笛卡尔坐标:

P’ = (x,y,z)

其中:x = r sin(Ф)cos(θ)

      Y = r sin(Ф)sin(θ)

      Z = r cos(Ф)

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值