五、立体造型的几何变换
在X3D场景空间中,每一个造型都有其空间坐标,通过修改空间坐标系就可以使该造型在场景空间中移动、旋转和缩放等。
X3D提供Transform节点来进行造型的几何变换,该节点的主要属性如下表所示:
属性 | 含义 | 默认值 | 使用说明 |
translation | 平移 | 0 0 0 | 将几何体平移到指定的空间点位置 |
rotation | 旋转 | 0 0 1 0 | 前3个值是空间坐标点,该点和原点相连的线为旋转轴,第4个值为旋转角度(以弧度为单位) |
center | 操作基点 | 0 0 0 | 指定一个空间点作为几何变换的基点 |
scale | 比例 | 1 1 1 | 指定在X、Y、Z方向的比例系数以便进行缩放 |
scaleOrientation | 预旋转比例 | 0 0 1 0 | 缩放前子节点局部坐标系统的预旋转(允许沿着子节点任意方向缩放),其数值含义同rotation属性 |
bboxCenter | 边界盒的中心 | 0 0 0 | 指定几何体自身原点的位置 |
bboxSize | 边界盒的大小 | -1 -1 -1 | 默认情况下是自动计算的,为了优化场景,也可以强制指定。 |
下面就来介绍上述属性的使用方法。
一、 平移
示例代码如下:(见18.x3d,18.x3dv,18.wrl)

说明:上面例子中,我们构造了两个球。为了使另一个球在(3,0,0)位置上显示,我们使用了Transform节点,该节点是一个组节点,Shape等节点需要作为它的子节点才能进行几何造型的变换。
结果如下图所示。

二、 旋转

说明:立方体先平移到(3,0,0)点,然后按自身原点沿Z轴旋转45度(弧度值约为0.785),结果如下图所示。

若将立方体自身原点移至最右侧面的中点,则上述代码可修改成:(见20.x3d,20.x3dv,20.wrl)

其结果如下:

请仔细比较这两次结果的不同。
三、 缩放

说明:上述代码中将第二个球沿X、Y、Z方向分别设置比例系数1、3和0.5,其结果如下图所示。

四、 综合实例
通过几何变换可以构造更多更复杂的几何造型,下面的示例代码就是用来构造一个三维坐标轴。(见22.x3d,22.x3dv,22.wrl)

说明:上述代码中,先用圆柱和圆锥构造Y轴,并将其合并成组Axis。然后对组Axis进行旋转变换,结果如下图所示。

上述显示的场景是用鼠标改变其视角的结果。当然,视角的改变还可直接通过节点进行设置。

