版权声明:本文为作者的原创文章,未经允许不得转载。 https://blog.csdn.net/lin5165352/article/details/87863243
three.js数学库
three.js中内置了很多数学库,功能丰富,但是很多都没实际用过。现在慢慢整理记录一些常用的函数,加深印象吧。
Box2
Box3
Color
Cylindrical
Euler
Frustum
Interpolant
Line3
Math
Matrix3
Matrix4
Plane
Quaternion
Ray
Sphere
Spherical
Triangle
Vector2
Vector3
Vector4
three.js中角度弧度互相转换
- .degToRad ( degrees : Float ) : Float
将度转化为弧度。
例如将90度转化弧度:THREE.Math.degToRad(90);
//1.5707963267948966 - .radToDeg ( radians : Float ) : Float
将弧度转换为角度。
例如将1.57(弧度)转化为角度:THREE.Math.radToDeg(1.57);
//89.95437383553924
Vector3计算向量夹角
-
.angleTo ( v : Vector3 ) : Float
以弧度返回该向量与向量v之间的角度。_a = new THREE.Vector3(1,0,0); _b = new THREE.Vector3(1,1,0); _a.angleTo(_b);
计算一个物体和相机的夹角
以场景中心为原点。物体和相机的的向量就分别为.position。一定要是在世界坐标系的中位置。
var _a = object.position;
var _b = camera.position;
var _c = THREE.Math.radToDeg(_a.angleTo(_b));
// _c 就是物体和相机夹角
// 如果object是一个子对象,其position为(0,0,0)的话。我们可以用.getWorldPosition ( target : Vector3 )方法获取其世界坐标然后在计算。
var _p = new THREE.Vector3(0,0,0);
object.getWorldPosition(_p);
// _p 就是object的世界坐标
- .getWorldPosition ( target : Vector3 ) : Vector3
target — 结果将被复制到这个Vector3中。
返回一个表示该物体在世界空间中位置的矢量。
target属性是非必须,但是最好加上。