ThreeJS入门(061):THREE.Vector2 知识详解,示例代码

作者: 还是大剑师兰特 ,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。

在这里插入图片描述

查看本专栏目录 - 本文是第 061篇入门文章

THREE.Vector2 是 Three.js 中用于表示二维向量的一个类。向量是具有方向和大小的量,通常用于表示位置、速度、加速度等概念。在 Three.js 中,THREE.Vector2 主要用于处理二维空间中的点或向量。

构造函数

构造函数 new THREE.Vector2(x, y) 接受两个参数来定义向量的 x 和 y 分量。

参数说明

  • x:向量在 x 轴上的分量,默认为 0。
  • y:向量在 y 轴上的分量,默认为 0。

示例

创建一个基本的二维向量:

const vector = new THREE.Vector2(1, 2);

这将创建一个 x 分量为 1,y 分量为 2 的二维向量。

方法

THREE.Vector2 提供了许多方法来操作向量,包括但不限于:

  • set(x, y):设置向量的 x 和 y 分量。
  • clone():返回一个新的 Vector2 实例,其值与当前向量相同。
  • copy(v):将向量 v 的值复制到当前向量。
  • add(v):将向量 v 加到当前向量。
  • addScalar(s):将标量 s 加到向量的每个分量。
  • sub(v):从当前向量减去向量 v。
  • multiplyScalar(s):将标量 s 乘以向量的每个分量。
  • divideScalar(s):将向量的每个分量除以标量 s。
  • negate():取向量的相反数。
  • dot(v):计算当前向量与向量 v 的点积。
  • length():计算向量的长度(模)。
  • lengthSq():计算向量长度的平方(避免开方运算,用于比较长度)。
  • normalize():将向量归一化(使其长度为 1)。
  • lerp(v, alpha):线性插值当前向量到向量 v,alpha 表示插值的比例。
  • equals(v):检查当前向量是否等于向量 v。
  • distanceTo(v):计算当前向量与向量 v 之间的欧几里得距离。
  • distanceToSquared(v):计算当前向量与向量 v 之间的距离的平方。
  • angleTo(v):计算当前向量与向量 v 之间的角度。
  • rotateAround(center, angle):围绕点 center 旋转当前向量 angle 角度。
  • applyMatrix3(m):将矩阵 m 应用于当前向量。

示例

创建并向量添加另一个向量:

const vector1 = new THREE.Vector2(1, 2);
const vector2 = new THREE.Vector2(3, 4);
vector1.add(vector2); // 结果向量为 (4, 6)

计算向量的长度:

const vector = new THREE.Vector2(3, 4);
console.log(vector.length()); // 输出 5

向量的归一化:

const vector = new THREE.Vector2(3, 4);
vector.normalize(); // 归一化后的向量为 (0.6, 0.8)

线性插值两个向量:

const vector1 = new THREE.Vector2(1, 2);
const vector2 = new THREE.Vector2(3, 4);
const interpolatedVector = vector1.clone().lerp(vector2, 0.5); // 结果向量为 (2, 3)

使用 THREE.Vector2 在 Three.js 中

THREE.Vector2 在 Three.js 中有许多用途,例如:

  • 用于表示二维空间中的点。
  • 用于表示二维空间中的向量。
  • 用于处理 UV 坐标。
  • 用于处理纹理坐标。
  • 用于计算光照和其他物理属性。

总结

THREE.Vector2 是一个用于表示二维向量的类,提供了丰富的操作向量的方法。通过这些方法,你可以执行向量加法、减法、缩放、归一化、点积计算等操作。在 Three.js 的许多功能中,THREE.Vector2 都扮演着重要的角色,尤其是在处理二维空间的问题时。理解并熟练使用 THREE.Vector2 对于开发复杂的 Three.js 应用程序是非常有帮助的。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是大剑师兰特

打赏一杯可口可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值