# 平面（[name]）

在三维空间中无限延伸的二维平面，平面方程用单位长度的法向量和常数表示为海塞法向量[link:http://mathworld.wolfram.com/HessianNormalForm.html Hessian normal form]形式。

## 构造器（Constructor）

### [name]( [param:Vector3 normal], [param:Float constant] )

[page:Vector3 normal] - (可选参数) 定义单位长度的平面法向量[page:Vector3]。默认值为 *(1, 0, 0)*。
[page:Float constant] - (可选参数) 从原点到平面的有符号距离。 默认值为 *0*.

## 属性（Properties）

### [property:Boolean isPlane]

Read-only flag to check if a given object is of type [name].

### [property:Vector3 normal]

### [property:Float constant]

## 方法（Methods）

### [method:this applyMatrix4]( [param:Matrix4 matrix], [param:Matrix3 optionalNormalMatrix] )

[page:Matrix4 matrix] - 要应用的四位矩阵（[Page:Matrix4]）。
[page:Matrix3 optionalNormalMatrix] - (可选参数) 预先计算好的上述Matrix4参数的法线矩阵 [Page:Matrix3]。
在平面上应用矩阵。矩阵必须是仿射齐次变换。
如果提供一个optionalNormalMatrix，可以这样创建: `const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );`

### [method:Plane clone]()

返回一个与当前平面有相同法线 [page:.normal normal]，常量 [page:.constant constant] 距离的平面。

### [method:Vector3 coplanarPoint]( [param:Vector3 target] )

[page:Vector3 target] — 结果会拷贝到该向量中。
返回一个共面点，通过原点的法向量在平面上投影算得。

### [method:this copy]( [param:Plane plane] )

拷贝给定平面，将其中的法线 [page:.normal normal]，距离常量 [page:.constant constant]属性拷贝给该对象。

### [method:Float distanceToPoint]( [param:Vector3 point] )

返回点[page:Vector3 point]到平面的有符号距离。

### [method:Float distanceToSphere]( [param:Sphere sphere] )

返回球面 [page:Sphere sphere] 的边缘到平面的最短距离。

### [method:Boolean equals]( [param:Plane plane] )

检查两个平面是否相等。（法线 [page:.normal normal] 以及常量 [page:.constant constant] 都相同）。

### [method:Vector3 intersectLine]( [param:Line3 line], [param:Vector3 target] )

[page:Line3 line] - 检测是否相交的三维几何线段 [page:Line3]。
[page:Vector3 target] — 结果将会写入该向量中。
返回给定线段和平面的交点。如果不相交则返回null。如果线与平面共面，则返回该线段的起始点。

### [method:Boolean intersectsBox]( [param:Box3 box] )

[page:Box3 box] - 检查是否相交的包围盒 [page:Box3]。
确定该平面是否与给定3d包围盒[page:Box3]相交。

### [method:Boolean intersectsLine]( [param:Line3 line] )

[page:Line3 line] - 检查是否相交的三维线段 [page:Line3]。
测试线段是否与平面相交。

### [method:Boolean intersectsSphere]( [param:Sphere sphere] )

[page:Sphere sphere] - 检查是否相交的球体 [page:Sphere]。
确定该平面是否与给定球体 [page:Sphere] 相交。

### [method:this negate]()

将法向量与常量求反（乘以-1）。

### [method:this normalize]()

归一化法向量 [page:.normal normal] ，并相应的调整常量 [page:.constant constant]数值。

### [method:Vector3 projectPoint]( [param:Vector3 point], [param:Vector3 target] )

[page:Vector3 point] - 需要投射到该平面的点。
[page:Vector3 target] — 在该平面上离投射点最近的点。
将一个点[page:Vector3 point]投射到该平面上。

### [method:this set]( [param:Vector3 normal], [param:Float constant] )

[page:Vector3 normal] - 单位长度的向量表示平面的法向量。
[page:Float constant] - 原点到平面有符号距离。
设置平面 [page:.normal normal] 的法线和常量 [page:.constant constant] 属性值。

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

[page:Float x] - 单位长度法向量的x值。
[page:Float y] - 单位长度法向量的y值。
[page:Float z] - 单位长度法向量的z值。
[page:Float w] - 原点沿法向量到平面常量 [page:.constant constant] 距离。
设置定义平面的各个变量。

### [method:this setFromCoplanarPoints]( [param:Vector3 a], [param:Vector3 b], [param:Vector3 c] )

[page:Vector3 a] - 用于确定平面的第一个点。
[page:Vector3 b] - 用于确定平面的第二个点。
[page:Vector3 c] - 用于确定平面的第三个点。
根据给定的三个点确定平面。如果三个点共线将会抛出错误。通过右手螺旋规则确定（向量叉乘）法向量 [page:.normal normal]。

### [method:this setFromNormalAndCoplanarPoint]( [param:Vector3 normal], [param:Vector3 point] )

[page:Vector3 normal] - 平面单位法向量
[page:Vector3 point] - 平面上的点
通过参数提供的法线 normal 和 平面上的一个点 point 来设置该平面。

### [method:this translate]( [param:Vector3 offset] )

[page:Vector3 offset] - 平移量
将平面平移给定向量大小，注意：这只会影响平面的常量不会影响平面的法向量。

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]