物体、灯光和摄像机的位子都是使用的典型的3D坐标系统。之前,我们讲解过POV-Ray的坐标系统。这里我们在回顾一下,X轴的正方向指向右边,Y轴正方向指向上,Z轴指向屏幕里。
坐标系统的位置经常用三个元素来表示(x,y,z),这是很容易理解的。
向量也不总是来表示指示方向的。他们也涉及一些对物体移动、旋转和大小控制的操作。
大小,位置,方向和变形的坐标操作,与一个叫做transformations的标识符有关。接下里我们就阐述一下transformations和他们的使用。
变化
支持变形的关键字有rotate,scale,translate。他们用来变形,处理大小或者移动物体和纹理。一个转化矩阵可以用来完成更复杂的变化操作。一组变形操作可以融合在一起,存储到一个transformation标识符里。transformations的语法如下所示
TRANSFORMATION:
rotate <Rotate_Amt> | scale <Scale_Amt> |
translate <Translate_Amt> | transform TRANSFORM_IDENTIFIER |
transform { TRANSFORMATION_BLOCK...} |
matrix <Val00, Val01, Val02,
Val10, Val11, Val12,
Val20, Val21, Val22,
Val30, Val31, Val32>
TRANSFORMATION_BLOCK:
TRANSFORM_IDENTIFIER | TRANSFORMATION | inverse
TRANSFORM_DECLARATION:
#declare IDENTIFIER = transform { TRANSFORMATION_BLOCK...} |
#local IDENTIFIER = transform { TRANSFORMATION_BLOCK...}
translate
translate关键经常后面跟着一个向量,这个向量用来确定相对于目前位置,要移动的变化量。
sphere { <10, 10, 10>, 1
pigment { Green }
translate <-5, 2, 1>
}
上面的代码将会把球体,从<10,10,10>移动到<5,12,11>,而不是<-5,2,1>。另外translate后面的如果有的元素为0,那么就是没有变化。
Scale
你可以通过使用scale标识符来改变物体或者贴图模式的大小。同样的,关键字后面也是一个向量。
scale可以用来拉伸或者压扁元素。大于1拉伸,小于1压扁。
多个scale可以用使用。