# 四维矩阵（[name]）

• [page:Object3D.matrix]: 存储物体的本地变换。 这是对象相对于其父对象的变换。
• [page:Object3D.matrixWorld]: 对象的全局或世界变换。如果对象没有父对象，那么这与存储在矩阵[page:Object3D.matrix matrix]中的本地变换相同。
• [page:Object3D.modelViewMatrix]: 表示对象相坐标相对于摄像机空间坐标转换， 一个对象的 modelViewMatrix 是物体世界变换矩阵乘以摄像机相对于世界空间变换矩阵的逆矩阵。

• [page:Camera.matrixWorldInverse]: 视矩阵 - 摄像机世界坐标变换的逆矩阵。
• [page:Camera.projectionMatrix]: 表示将场景中的信息投影到裁剪空间。

## Extracting position, rotation and scale

There are several options available for extracting position, rotation and scale from a Matrix4.

• [page:Vector3.setFromMatrixPosition]: can be used to extract the translation component.
• [page:Vector3.setFromMatrixScale]: can be used to extract the scale component.
• [page:Quaternion.setFromRotationMatrix], [page:Euler.setFromRotationMatrix] or [page:.extractRotation extractRotation] can be used to extract the rotation component.
• [page:.decompose decompose] can be used to extract position, rotation and scale all at once.

## 方法（Methods）

### [method:null decompose]( [param:Vector3 position], [param:Quaternion quaternion], [param:Vector3 scale] )

Note: Not all matrices are decomposable in this way. For example, if an object has a non-uniformly scaled parent, then the object's world matrix may not be decomposable, and this method may not be appropriate.

### [method:this fromArray]( [param:Array array], [param:Integer offset] )

[page:Array array] - 用来存储设置元素数据的数组
[page:Integer offset] - (可选参数) 数组的偏移量，默认值为 0。

### [method:this invert]()

Inverts this matrix, using the [link:https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution analytic method]. You can not invert with a determinant of zero. If you attempt this, the method produces a zero matrix instead.

### [method:this makeRotationAxis]( [param:Vector3 axis], [param:Float theta] )

[page:Vector3 axis] — 旋转轴，需要被归一化。
[page:Float theta] — 旋转量（弧度）。

### [method:this makeRotationX]( [param:Float theta] )

[page:Float theta] — Rotation angle in radians.

### [method:this makeRotationY]( [param:Float theta] )

[page:Float theta] — Rotation angle in radians.

### [method:this makeRotationZ]( [param:Float theta] )

[page:Float theta] — Rotation angle in radians.

### [method:this makeScale]( [param:Float x], [param:Float y], [param:Float z] )

[page:Float x] - 在X轴方向的缩放比。
[page:Float y] - 在Y轴方向的缩放比。
[page:Float z] - 在Z轴方向的缩放比。

### [method:this makeShear]( [param:Float x], [param:Float y], [param:Float z] )

[page:Float x] - 在X轴上剪切的量。
[page:Float y] - 在Y轴上剪切的量。
[page:Float z] - 在Z轴上剪切的量。

### [method:this makeTranslation]( [param:Float x], [param:Float y], [param:Float z] )

[page:Float x] - 在X轴上的平移量。
[page:Float y] - 在Y轴上的平移量。
[page:Float z] - 在Z轴上的平移量。

### [method:this setFromMatrix3]( [param:Matrix3 m] )

Set the upper 3x3 elements of this matrix to the values of the Matrix3 [page:Matrix3 m].

### [method:Array toArray]( [param:Array array], [param:Integer offset] )

[page:Array array] - (可选参数) 存储矩阵元素的数组，如果未指定会创建一个新的数组。
[page:Integer offset] - (可选参数) 存放矩阵元素数组的偏移量。