BufferGeometry
Object3D
Raycaster
Camera
CubeCamera
PerspectiveCamera
OrthographicCamera
StereoCamera
Clock
Curve
CurvePath
Path
Shape
ShapePath
ArrowHelper
AxesHelper
BoxHelper
Box3Helper
CameraHelper
DirectionalLightHelper
GridHelper
PolarGridHelper
HemisphereLightHelper
PlaneHelper
PointLightHelper
SkeletonHelper
SpotLightHelper
Light
PointLight
RectAreaLight
SpotLight
DirectionalLight
HemisphereLight
LightShadow
PointLightShadow
AnimationLoader
AudioLoader
BufferGeometryLoader
CompressedTextureLoader
CubeTextureLoader
DataTextureLoader
FileLoader
ImageBitmapLoader
ImageLoader
Loader
LoaderUtils
MaterialLoader
ObjectLoader
TextureLoader
LoadingManager
Material
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
MathUtils
Matrix3
Matrix4
Plane
Quaternion
AnimationAction
AnimationClip
AnimationMixer
AnimationObjectGroup
AnimationUtils
keyframeTrack
PropertyBinding
PropertyMixer
BooleanKeyframeTrack
QuaternionKeyframeTrack
StringKeyframeTrack
Audio
AudioAnalyser
AudioContext
AudioListener
PositionalAudio

Plane.projectPoint()

Plane.projectPoint(point: Vector3, target: Vector3): Vector3

将一个点投影在平面上,并返回投影点的坐标。

参数

  • point:Vector3类型,需要被投影的点
  • target:Vector3类型,可选参数,投影点的返回值,如果提供了该参数,则不需要创建新的Vector3对象。默认值为null

返回值

返回投影点的坐标,类型为Vector3。

描述

Plane.projectPoint 方法将给定的点投影到平面上并返回投影点。具体地,该方法使用下面的公式来计算投影点:

投影点 = 点 - 法向量 * 点到平面的距离

其中,点到平面的距离使用点的坐标和平面方程计算而得。

示例

var plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0); // 创建一个水平的平面

var point = new THREE.Vector3(5, 3, 2); // 需要被投影的点

var projPoint = plane.projectPoint(point); // 投影点的坐标

console.log(projPoint); // 输出: Vector3 {x: 5, y: 0, z: 2}

注意事项

Plane.projectPoint 方法不会改变原来的点对象,而是返回一个新的Vector3对象。

如果提供了target参数,则该方法将投影点的坐标存储在该参数所表示的Vector3对象中,以避免创建新的Vector3对象。

在使用该方法之前,需要确保平面的法向量已经被正确设置。

参考文献