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

Curve.getPoint()

方法说明:

Curve.getPoint(t, optionalTarget)是 Three.js 中 Curve 类的方法之一,用于获取曲线上给定参数 t 处的坐标点。

语法:

getPoint( t: number, optionalTarget?: Vector3 ): Vector3

参数说明:

  • t(必填) 表示曲线上的参数值,取值范围为 [0, 1]。
  • optionalTarget(可选) 表示可选参数,用于存储返回值。如果该参数为空,则会新建一个 Vector3 对象来存储返回的值。

返回值:

返回一个包含坐标 (x, y, z)Vector3 实例,表示给定参数值 t 在曲线上处的实际坐标。

示例:

const curve = new THREE.LineCurve3(
  new THREE.Vector3( -10, 0, 0 ),
  new THREE.Vector3( 10, 0, 0 )
);
const point = curve.getPoint( 0.5 );

在上述例子中,curve.getPoint(0.5) 方法会返回一个位于 x 轴中心的点 Vector3(0, 0, 0),因为 LineCurve3 是由起点到终点之间的一条直线组成的曲线。

代码流程:

Curve.prototype.getPoint = function ( t, optionalTarget ) {
  const point = optionalTarget || new Vector3();
  point.set( this.getPointAt( t ) );
  return point;
};

该方法的代码实现非常简单,直接调用了 getPointAt() 方法计算出曲线上的坐标值,然后将结果存储在 Vector3 对象中并返回。

注意事项:

  • 传入的参数值 t 必须在 [0, 1] 范围内,否则返回的坐标点可能会不正确。
  • 如果 optionalTarget 参数存在,则会直接将计算结果存储在该对象中,因此可以避免每次都新建对象的性能开销。