Vector3i
使用整数坐标的 3D 向量。
描述
包含三个元素的结构体,可用于代表 3D 坐标或任何整数的三元组。
使用整数坐标,因此需要绝对精确时应比 Vector3 优先使用。请注意,取值范围有 32 位的限制,与 Vector3 不同,这个类型的精度无法使用引擎的构建参数进行配置。如果需要 64 位的值,请使用 int 或 PackedInt64Array。
注意:在布尔语境中,如果 Vector3i 等于 Vector3i(0, 0, 0) 则求值结果为 false。否则 Vector3i 的求值结果始终为 true。
教程
属性
|
||
|
||
|
构造函数
Vector3i() |
|
方法
abs() const |
|
distance_squared_to(to: Vector3i) const |
|
distance_to(to: Vector3i) const |
|
length() const |
|
length_squared() const |
|
max_axis_index() const |
|
min_axis_index() const |
|
sign() const |
|
运算符
operator !=(right: Vector3i) |
|
operator %(right: Vector3i) |
|
operator %(right: int) |
|
operator *(right: Vector3i) |
|
operator *(right: float) |
|
operator *(right: int) |
|
operator +(right: Vector3i) |
|
operator -(right: Vector3i) |
|
operator /(right: Vector3i) |
|
operator /(right: float) |
|
operator /(right: int) |
|
operator <(right: Vector3i) |
|
operator <=(right: Vector3i) |
|
operator ==(right: Vector3i) |
|
operator >(right: Vector3i) |
|
operator >=(right: Vector3i) |
|
operator [](index: int) |
|
枚举
enum Axis: 🔗
Axis AXIS_X = 0
X 轴的枚举值。由 max_axis_index() 和 min_axis_index() 返回。
Axis AXIS_Y = 1
Y 轴的枚举值。由 max_axis_index() 和 min_axis_index() 返回。
Axis AXIS_Z = 2
Z 轴的枚举值。由 max_axis_index() 和 min_axis_index() 返回。
常量
ZERO = Vector3i(0, 0, 0) 🔗
零向量,所有分量都设置为 0 的向量。
ONE = Vector3i(1, 1, 1) 🔗
一向量,所有分量都设置为 1 的向量。
MIN = Vector3i(-2147483648, -2147483648, -2147483648) 🔗
最小向量,所有分量等于 INT32_MIN 的向量。可用作 Vector3.INF 的负整数等价物。
MAX = Vector3i(2147483647, 2147483647, 2147483647) 🔗
最大向量,所有分量等于 INT32_MAX 的向量。可用作 Vector3.INF 的整数等价物。
LEFT = Vector3i(-1, 0, 0) 🔗
左单位向量。代表局部的左方向,全局的西方向。
RIGHT = Vector3i(1, 0, 0) 🔗
右单位向量。代表局部的右方向,全局的东方向。
UP = Vector3i(0, 1, 0) 🔗
上单位向量。
DOWN = Vector3i(0, -1, 0) 🔗
下单位向量。
FORWARD = Vector3i(0, 0, -1) 🔗
前单位向量。代表局部的前方向,全局的北方向。
BACK = Vector3i(0, 0, 1) 🔗
向后的单位向量。代表局部的后方,全局的南方。
属性说明
向量的 X 分量。也可以通过使用索引位置 [0] 访问。
向量的 Y 分量。也可以通过使用索引位置 [1] 访问。
向量的 Z 分量。也可以通过使用索引位置 [2] 访问。
构造函数说明
构造默认初始化的 Vector3i,所有分量都为 0。
Vector3i Vector3i(from: Vector3i)
构造给定 Vector3i 的副本。
Vector3i Vector3i(from: Vector3)
根据给定的 Vector3 构造 Vector3i,会将各个分量的小数部分截断(向 0 取整)。要使用不同的行为,请考虑改为传入 Vector3.ceil()、Vector3.floor() 或 Vector3.round() 的结果。
Vector3i Vector3i(x: int, y: int, z: int)
返回具有给定分量的 Vector3i。
方法说明
返回一个新向量,其所有分量都是绝对值,即正值。
Vector3i clamp(min: Vector3i, max: Vector3i) const 🔗
返回一个新向量,每个分量都使用 @GlobalScope.clamp() 限制在 min 和 max 之间。
Vector3i clampi(min: int, max: int) const 🔗
返回一个新向量,每个分量都使用 @GlobalScope.clamp() 限制在 min 和 max 之间。
int distance_squared_to(to: Vector3i) const 🔗
返回该向量与 to 之间的距离的平方。
该方法比 distance_to() 运行得更快,因此请在需要比较向量或者用于某些公式的平方距离时,优先使用这个方法。
float distance_to(to: Vector3i) const 🔗
返回该向量与 to 之间的距离。
返回这个向量的长度,即大小。
返回这个向量的平方长度,即平方大小。
这个方法比 length() 运行得更快,所以如果你需要比较向量或需要一些公式的平方距离时,更喜欢用它。
Vector3i max(with: Vector3i) const 🔗
返回自身与 with 各分量的最大值,等价于 Vector3i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z))。
返回该向量中最大值的轴。见 AXIS_* 常量。如果所有分量相等,则该方法返回 AXIS_X。
Vector3i maxi(with: int) const 🔗
返回自身与 with 各分量的最大值,等价于 Vector3i(maxi(x, with), maxi(y, with), maxi(z, with))。
Vector3i min(with: Vector3i) const 🔗
返回自身与 with 各分量的最小值,等价于 Vector3i(mini(x, with.x), mini(y, with.y), mini(z, with.z))。
返回该向量中最小值的轴。见 AXIS_* 常量。如果所有分量相等,则该方法返回 AXIS_Z。
Vector3i mini(with: int) const 🔗
返回自身与 with 各分量的最小值,等价于 Vector3i(mini(x, with), mini(y, with), mini(z, with))。
返回一个新的向量,如果是正数,每个分量被设置为1 ,如果是负数,-1 ,如果是零,0 。其结果与对每个分量调用@GlobalScope.sign()相同。
Vector3i snapped(step: Vector3i) const 🔗
返回新的向量,每个分量都吸附到了与 step 中对应分量最接近的倍数。
Vector3i snappedi(step: int) const 🔗
返回一个新向量,其中每个分量都吸附到了 step 的最接近倍数。
运算符说明
bool operator !=(right: Vector3i) 🔗
如果向量不相等,则返回 true。
Vector3i operator %(right: Vector3i) 🔗
获取该 Vector3i 的每个分量与给定 Vector3i 中分量的余数。这个运算使用的是截断式除法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考虑改用 @GlobalScope.posmod()。
print(Vector3i(10, -20, 30) % Vector3i(7, 8, 9)) # 输出 (3, -4, 3)
Vector3i operator %(right: int) 🔗
获取该 Vector3i 的每个分量与给定的 int 的余数。这个运算使用的是截断式除法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考虑改用 @GlobalScope.posmod()。
print(Vector3i(10, -20, 30) % 7) # 输出 (3, -6, 2)
Vector3i operator *(right: Vector3i) 🔗
将该 Vector3i 的每个分量乘以给定 Vector3i 的对应分量。
print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # 输出 (30, 80, 150)
Vector3 operator *(right: float) 🔗
将该 Vector3i 的每个分量乘以给定的 float。返回的是 Vector3。
print(Vector3i(10, 15, 20) * 0.9) # 输出 (9.0, 13.5, 18.0)
Vector3i operator *(right: int) 🔗
将该 Vector3i 的每个分量乘以给定的 int。
Vector3i operator +(right: Vector3i) 🔗
将该 Vector3i 的每个分量加上给定 Vector3i 的对应分量。
print(Vector3i(10, 20, 30) + Vector3i(3, 4, 5)) # 输出 (13, 24, 35)
Vector3i operator -(right: Vector3i) 🔗
将该 Vector3i 的每个分量减去给定 Vector3i 的对应分量。
print(Vector3i(10, 20, 30) - Vector3i(3, 4, 5)) # 输出 (7, 16, 25)
Vector3i operator /(right: Vector3i) 🔗
将该 Vector3i 的每个分量除以给定 Vector3i 的对应分量。
print(Vector3i(10, 20, 30) / Vector3i(2, 5, 3)) # 输出 (5, 4, 10)
Vector3 operator /(right: float) 🔗
Divides each component of the Vector3i by the given float. Returns a Vector3.
print(Vector3i(1, 2, 3) / 2.5) # Prints (0.4, 0.8, 1.2)
Vector3i operator /(right: int) 🔗
将该 Vector3i 的每个分量除以给定的 int。
bool operator <(right: Vector3i) 🔗
比较两个 Vector3i 向量,首先检查左向量的 X 值是否小于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可用于向量排序。
bool operator <=(right: Vector3i) 🔗
比较两个 Vector3i 向量,首先检查左向量的 X 值是否小于等于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可用于向量排序。
bool operator ==(right: Vector3i) 🔗
如果向量相等,则返回 true。
bool operator >(right: Vector3i) 🔗
比较两个 Vector3i 向量,首先检查左向量的 X 值是否大于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可用于向量排序。
bool operator >=(right: Vector3i) 🔗
比较两个 Vector3i 向量,首先检查左向量的 X 值是否大于等于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符可用于向量排序。
使用向量分量的 index 来访问向量分量。v[0] 等价于 v.x,v[1] 等价于 v.y,v[2] 等价于 v.z。
返回与 + 不存在时相同的值。单目 + 没有作用,但有时可以使你的代码更具可读性。
返回该 Vector3i 的负值。和写 Vector3i(-v.x, -v.y, -v.z) 是一样的。该操作在保持相同幅度的同时,翻转向量的方向。