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(Ф)