Vector4i

使用整数坐标的 4D 向量。

描述

包含四个元素的结构体,可用于代表 4D 坐标或任何整数的四元组。

使用整数坐标,因此需要绝对精确时应比 Vector4 优先使用。请注意,取值范围有 32 位的限制,与 Vector4 不同,这个类型的精度无法使用引擎的构建参数进行配置。如果需要 64 位的值,请使用 intPackedInt64Array

注意:在布尔语境中,如果 Vector4i 等于 Vector4i(0, 0, 0, 0) 则求值结果为 false。否则 Vector4i 的求值结果始终为 true

属性

int

w

0

int

x

0

int

y

0

int

z

0

构造函数

Vector4i

Vector4i()

Vector4i

Vector4i(from: Vector4i)

Vector4i

Vector4i(from: Vector4)

Vector4i

Vector4i(x: int, y: int, z: int, w: int)

方法

Vector4i

abs() const

Vector4i

clamp(min: Vector4i, max: Vector4i) const

Vector4i

clampi(min: int, max: int) const

int

distance_squared_to(to: Vector4i) const

float

distance_to(to: Vector4i) const

float

length() const

int

length_squared() const

Vector4i

max(with: Vector4i) const

int

max_axis_index() const

Vector4i

maxi(with: int) const

Vector4i

min(with: Vector4i) const

int

min_axis_index() const

Vector4i

mini(with: int) const

Vector4i

sign() const

Vector4i

snapped(step: Vector4i) const

Vector4i

snappedi(step: int) const

运算符

bool

operator !=(right: Vector4i)

Vector4i

operator %(right: Vector4i)

Vector4i

operator %(right: int)

Vector4i

operator (right: Vector4i)

Vector4

operator (right: float)

Vector4i

operator *(right: int)

Vector4i

operator +(right: Vector4i)

Vector4i

operator -(right: Vector4i)

Vector4i

operator /(right: Vector4i)

Vector4

operator /(right: float)

Vector4i

operator /(right: int)

bool

operator <(right: Vector4i)

bool

operator <=(right: Vector4i)

bool

operator ==(right: Vector4i)

bool

operator >(right: Vector4i)

bool

operator >=(right: Vector4i)

int

operator [](index: int)

Vector4i

operator unary+()

Vector4i

operator unary-()


常量

AXIS_X = 0 🔗

X 轴的枚举值。由 max_axis_indexmin_axis_index 返回。

AXIS_Y = 1 🔗

Y 轴的枚举值。由 max_axis_indexmin_axis_index 返回。

AXIS_Z = 2 🔗

Z 轴的枚举值。由 max_axis_indexmin_axis_index 返回。

AXIS_W = 3 🔗

W 轴的枚举值。由 max_axis_indexmin_axis_index 返回。

ZERO = Vector4i(0, 0, 0, 0) 🔗

零向量,所有分量都设置为 0 的向量。

ONE = Vector4i(1, 1, 1, 1) 🔗

一向量,所有分量都设置为 1 的向量。

MIN = Vector4i(-2147483648, -2147483648, -2147483648, -2147483648) 🔗

最小向量,所有分量等于 INT32_MIN 的向量。可用作 Vector4.INF 的负整数等价物。

MAX = Vector4i(2147483647, 2147483647, 2147483647, 2147483647) 🔗

最大向量,所有分量等于 INT32_MAX 的向量。可用作 Vector4.INF 的整数等价物。


属性说明

int w = 0 🔗

该向量的 W 分量。也可以通过使用索引位置 [3] 访问。


int x = 0 🔗

向量的 X 分量。也可以通过使用索引位置 [0] 访问。


int y = 0 🔗

向量的 Y 分量。也可以通过使用索引位置 [1] 访问。


int z = 0 🔗

向量的 Z 分量。也可以通过使用索引位置 [2] 访问。


构造函数说明

Vector4i Vector4i() 🔗

构造默认初始化的 Vector4i,所有分量都为 0


Vector4i Vector4i(from: Vector4i)

构造给定 Vector4i 的副本。


Vector4i Vector4i(from: Vector4)

根据给定的 Vector4 构造 Vector4i,会将各个分量的小数部分截断(向 0 取整)。要使用不同的行为,请考虑改为传入 Vector4.ceilVector4.floorVector4.round 的结果。


Vector4i Vector4i(x: int, y: int, z: int, w: int)

返回具有给定分量的 Vector4i


方法说明

Vector4i abs() const 🔗

返回一个新向量,其所有分量都是绝对值,即正值。


Vector4i clamp(min: Vector4i, max: Vector4i) const 🔗

返回一个新向量,每个分量都使用 @GlobalScope.clamp 限制在 minmax 之间。


Vector4i clampi(min: int, max: int) const 🔗

返回一个新向量,每个分量都使用 @GlobalScope.clamp 限制在 minmax 之间。


int distance_squared_to(to: Vector4i) const 🔗

返回该向量与 to 之间的距离的平方。

该方法比 distance_to 运行得更快,因此请在需要比较向量或者用于某些公式的平方距离时,优先使用这个方法。


float distance_to(to: Vector4i) const 🔗

返回该向量与 to 之间的距离。


float length() const 🔗

返回这个向量的长度,即大小。


int length_squared() const 🔗

返回这个向量的平方长度,即平方大小。

这个方法比 length 运行得更快,所以如果你需要比较向量或需要一些公式的平方距离时,更喜欢用它。


Vector4i max(with: Vector4i) const 🔗

返回自身与 with 各分量的最大值,等价于 Vector4i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z), maxi(w, with.w))


int max_axis_index() const 🔗

返回该向量中最大值的轴。见 AXIS_* 常量。如果所有分量相等,则该方法返回 AXIS_X


Vector4i maxi(with: int) const 🔗

返回自身与 with 各分量的最大值,等价于 Vector4i(maxi(x, with), maxi(y, with), maxi(z, with), maxi(w, with))


Vector4i min(with: Vector4i) const 🔗

返回自身与 with 各分量的最小值,等价于 Vector4i(mini(x, with.x), mini(y, with.y), mini(z, with.z), mini(w, with.w))


int min_axis_index() const 🔗

返回该向量中最小值的轴。见 AXIS_* 常量。如果所有分量相等,则该方法返回 AXIS_W


Vector4i mini(with: int) const 🔗

返回自身与 with 各分量的最小值,等价于 Vector4i(mini(x, with), mini(y, with), mini(z, with), mini(w, with))


Vector4i sign() const 🔗

返回一个新的向量,如果是正数,每个分量被设置为1 ,如果是负数,-1 ,如果是零,0 。其结果与对每个分量调用@GlobalScope.sign相同。


Vector4i snapped(step: Vector4i) const 🔗

返回新的向量,每个分量都吸附到了与 step 中对应分量最接近的倍数。


Vector4i snappedi(step: int) const 🔗

返回一个新向量,其中每个分量都吸附到了 step 的最接近倍数。


运算符说明

bool operator !=(right: Vector4i) 🔗

如果向量不相等,则返回 true


Vector4i operator %(right: Vector4i) 🔗

获取该 Vector4i 的每个分量与给定 Vector4i 中分量的余数。这个运算使用的是截断式除法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考虑改用 @GlobalScope.posmod

  1. print(Vector4i(10, -20, 30, -40) % Vector4i(7, 8, 9, 10)) # 输出 "(3, -4, 3, 0)"

Vector4i operator %(right: int) 🔗

获取该 Vector4i 的每个分量与给定的 int 的余数。这个运算使用的是截断式除法,因为对负数不友好,所以通常不会想要使用。如果你想要处理负数,请考虑改用 @GlobalScope.posmod

  1. print(Vector4i(10, -20, 30, -40) % 7) # 输出 "(3, -6, 2, -5)"

Vector4i operator *(right: Vector4i) 🔗

将该 Vector4i 的每个分量乘以给定 Vector4i 的对应分量。

  1. print(Vector4i(10, 20, 30, 40) * Vector4i(3, 4, 5, 6))# 输出 "(30, 80, 150, 240)"

Vector4 operator *(right: float) 🔗

将该 Vector4i 的每个分量乘以给定的 float

由于浮点数运算,返回值为 Vector4。

  1. print(Vector4i(10, 20, 30, 40) * 2) # 输出 "(20, 40, 60, 80)"

Vector4i operator *(right: int) 🔗

将该 Vector4i 的每个分量乘以给定的 int


Vector4i operator +(right: Vector4i) 🔗

将该 Vector4i 的每个分量加上给定 Vector4i 的对应分量。

  1. print(Vector4i(10, 20, 30, 40) + Vector4i(3, 4, 5, 6)) # 输出 "(13, 24, 35, 46)"

Vector4i operator -(right: Vector4i) 🔗

将该 Vector4i 的每个分量减去给定 Vector4i 的对应分量。

  1. print(Vector4i(10, 20, 30, 40) - Vector4i(3, 4, 5, 6)) # 输出 "(7, 16, 25, 34)"

Vector4i operator /(right: Vector4i) 🔗

将该 Vector4i 的每个分量除以给定 Vector4i 的对应分量。

  1. print(Vector4i(10, 20, 30, 40) / Vector4i(2, 5, 3, 4)) # 输出 "(5, 4, 10, 10)"

Vector4 operator /(right: float) 🔗

将该 Vector4i 的每个分量除以给定的 float

由于浮点数运算,返回值为 Vector4。

  1. print(Vector4i(10, 20, 30, 40) / 2 # 输出 "(5, 10, 15, 20)"

Vector4i operator /(right: int) 🔗

将该 Vector4 的每个分量除以给定的 int


bool operator <(right: Vector4i) 🔗

比较两个 Vector4i 向量,首先检查左向量的 X 值是否小于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运算符可用于向量排序。


bool operator <=(right: Vector4i) 🔗

比较两个 Vector4i 向量,首先检查左向量的 X 值是否小于等于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运算符可用于向量排序。


bool operator ==(right: Vector4i) 🔗

如果向量完全相等,则返回 true


bool operator >(right: Vector4i) 🔗

比较两个 Vector4i 向量,首先检查左向量的 X 值是否大于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运算符可用于向量排序。


bool operator >=(right: Vector4i) 🔗

比较两个 Vector4i 向量,首先检查左向量的 X 值是否大于等于 right 向量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运算符可用于向量排序。


int operator [](index: int) 🔗

使用向量分量的 index 来访问向量分量。v[0] 等价于 v.xv[1] 等价于 v.yv[2] 等价于 v.zv[3] 等价于 v.w


Vector4i operator unary+() 🔗

返回与 + 不存在时相同的值。单目 + 没有作用,但有时可以使你的代码更具可读性。


Vector4i operator unary-() 🔗

返回该 Vector4i 的负值。和写 Vector4i(-v.x, -v.y, -v.z, -v.w) 是一样的。这个运算会翻转向量方向,同时保持长度不变。