Vector3 — Aspose.3D FOSS for Java

Example

Vector3 是一个双精度的三分量向量,具有 x, y,,以及 z 分量。它在整个 Aspose.3D 中用于位置、方向、法线和缩放值。所有算术运算都会返回新的 Vector3 实例;原始实例不会被修改。.

import com.aspose.threed.*;

// Construct from components
Vector3 v = new Vector3(1.0, 2.0, 3.0);

// Copy constructor
Vector3 v2 = new Vector3(v);

// Default (zero vector)
Vector3 zero = new Vector3();

Example

ExampleExample
Vector3()构造零向量 (0, 0, 0)
Vector3(double x, double y, double z)从三个分量构造
Vector3(Vector3 other)拷贝构造函数

公共字段

Vector3 使用 公共字段 用于分量访问(而非 getter/setter 方法)::

ExampleExampleExampleExample
xdoublev.xX 分量
ydoublev.yY 分量
zdoublev.zZ 分量

计算属性

ExampleExampleExampleExample
lengthdoublegetLength()欧几里得长度 (sqrt(x^2+y^2+z^2)), 只读
length2doublegetLength2()平方长度,只读;比 getLength() 仅在需要比较时

静态字段

ExampleExampleExample
ZEROVector3Vector3(0, 0, 0)
ONEVector3Vector3(1, 1, 1)
UNIT_XVector3Vector3(1, 0, 0)
UNIT_YVector3Vector3(0, 1, 0)
UNIT_ZVector3Vector3(0, 0, 1)

Example

Example返回类型Example
set(double x, double y, double z)void就地设置所有三个分量
dot(Vector3 rhs)double与另一个的点积 Vector3
cross(Vector3 rhs)Vector3叉积 – 返回一个垂直于两个操作数的向量
normalize()Vector3返回一个单位长度的副本;如果长度为零则返回零向量
angleBetween(Vector3 dir)double此向量与…之间的弧度角 dir
angleBetween(Vector3 dir, Vector3 up)double在由…定义的平面上投影的有符号弧度角 up
sin()Vector3逐分量正弦
cos()Vector3逐分量余弦
compareTo(Vector3 other)int字典序比较:返回 -1、0 或 1
Vector3.parse(String s)Vector3静态。解析 "x y z" 字符串表示

Example

import com.aspose.threed.*;
import com.aspose.threed.Scene;

// Basic arithmetic
Vector3 a = new Vector3(1.0, 0.0, 0.0);
Vector3 b = new Vector3(0.0, 1.0, 0.0);

// Dot and cross products
double dot = a.dot(b);           // 0.0
Vector3 perp = a.cross(b);      // Vector3(0, 0, 1)

// Normalize
Vector3 direction = new Vector3(3.0, 4.0, 0.0);
Vector3 unit = direction.normalize();   // Vector3(0.6, 0.8, 0.0)
System.out.println(unit.getLength());    // 1.0

// Angle between vectors
double angle = a.angleBetween(b);
System.out.println(Math.toDegrees(angle));   // 90.0

// Use with a scene node transform
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");
node.getTransform().setTranslation(new Vector3(10.0, 0.0, 0.0));

另见

 中文