向量是具有方向和大小的量,在数学中,向量通常表示为有向线段,由起点和终点确定,起点到终点的距离就是向量的大小,向量之间的夹角就是向量的方向。

向量

//获取相机的方向向量
let endPoint = new THREE.Vector3(0, 0, 0);
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);

//之前效果
camera.position.set(0, 0, 10);
camera.lookAt(endPoint);

//之后效果
camera.position.set(0, 5, 10);
camera.lookAt(endPoint);

const direction = new THREE.Vector3(0, 0, 0);
camera.getWorldDirection(direction);
console.log(direction);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

getWorldDirection() 方法会返回一个三维向量,表示相机的方向向量,这个向量的大小为 1,方向为相机的方向。

  • 参数: 调用该函数的结果将复制给该 Vector3 对象

向量密码本:Threejs 用加减乘除驯服 3D 空间_webgl

如何计算

思路: 相机位置到目标点的向量就是相机的方向向量,所以我们可以通过目标点减去相机位置得到相机的方向向量。

1. 向量相减

向量相减就是对应分量相减,例如向量 a = (x1, y1, z1),向量 b = (x2, y2, z2),那么 a - b = (x1 - x2, y1 - y2, z1 - z2)。

2. 向量大小

向量的长度就是向量的模,向量的模可以通过勾股定理计算,例如向量 a = (x, y, z),那么 a 的模就是 sqrt(x2 + y2 + z2)。

3. 向量方向

向量的方向就是向量的单位向量,向量的单位向量可以通过将向量的每个分量除以向量的模得到,例如向量 a = (x, y,