Vector3i

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

描述

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

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

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

教程

属性

int

x

0

int

y

0

int

z

0

构造函数

Vector3i

Vector3i ( )

Vector3i

Vector3i ( Vector3i from )

Vector3i

Vector3i ( Vector3 from )

Vector3i

Vector3i ( int x, int y, int z )

方法

Vector3i

abs ( ) const

Vector3i

clamp ( Vector3i min, Vector3i max ) const

float

length ( ) const

int

length_squared ( ) const

int

max_axis_index ( ) const

int

min_axis_index ( ) const

Vector3i

sign ( ) const

Vector3i

snapped ( Vector3i step ) const

操作符

bool

operator != ( Vector3i right )

Vector3i

operator % ( Vector3i right )

Vector3i

operator % ( int right )

Vector3i

operator ( Vector3i right )

Vector3

operator ( float right )

Vector3i

operator * ( int right )

Vector3i

operator + ( Vector3i right )

Vector3i

operator - ( Vector3i right )

Vector3i

operator / ( Vector3i right )

Vector3

operator / ( float right )

Vector3i

operator / ( int right )

bool

operator < ( Vector3i right )

bool

operator <= ( Vector3i right )

bool

operator == ( Vector3i right )

bool

operator > ( Vector3i right )

bool

operator >= ( Vector3i right )

int

operator [] ( int index )

Vector3i

operator unary+ ( )

Vector3i

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 返回。

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)

向后的单位向量。代表局部的后方,全局的南方。


属性说明

int x = 0

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


int y = 0

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


int z = 0

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


构造函数说明

Vector3i Vector3i ( )

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


Vector3i Vector3i ( Vector3i from )

构造给定 Vector3i 的副本。


Vector3i Vector3i ( Vector3 from )

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


Vector3i Vector3i ( int x, int y, int z )

返回具有给定分量的 Vector3i


方法说明

Vector3i abs ( ) const

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


Vector3i clamp ( Vector3i min, Vector3i max ) const

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


float length ( ) const

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


int length_squared ( ) const

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

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


int max_axis_index ( ) const

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


int min_axis_index ( ) const

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


Vector3i sign ( ) const

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


Vector3i snapped ( Vector3i step ) const

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


操作符说明

bool operator != ( Vector3i right )

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


Vector3i operator % ( Vector3i right )

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

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

Vector3i operator % ( int right )

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

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

Vector3i operator * ( Vector3i right )

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

  1. print(Vector3i(10, 20, 30) * Vector3i(3, 4, 5)) # 输出 "(30, 80, 150)"

Vector3 operator * ( float right )

将该 Vector3i 的每个分量乘以给定的 float。返回的是 Vector3

  1. print(Vector3i(10, 15, 20) * 0.9) # 输出 "(9, 13.5, 18)"

Vector3i operator * ( int right )

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


Vector3i operator + ( Vector3i right )

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

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

Vector3i operator - ( Vector3i right )

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

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

Vector3i operator / ( Vector3i right )

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

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

Vector3 operator / ( float right )

将该 Vector3i 的每个分量除以给定的 float。返回的是 Vector3

  1. print(Vector3i(10, 20, 30) / 2.9) # 输出 "(5, 10, 15)"

Vector3i operator / ( int right )

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


bool operator < ( Vector3i right )

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


bool operator <= ( Vector3i right )

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


bool operator == ( Vector3i right )

如果向量相等,则返回 true


bool operator > ( Vector3i right )

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


bool operator >= ( Vector3i right )

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


int operator [] ( int index )

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


Vector3i operator unary+ ( )

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


Vector3i operator unary- ( )

返回该 Vector3i 的负值。和写 Vector3i(-v.x, -v.y, -v.z) 是一样的。该操作在保持相同幅度的同时,翻转向量的方向。

Previous Next


© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7.

Built with Sphinx using a theme provided by Read the Docs.