:github_url: hide .. _class_Vector4: Vector4 ======= A 4D vector using floating-point coordinates. .. rst-class:: classref-introduction-group 說明 ---- 包含四個元素的結構體,可用於代表 4D 座標或任何數值的四元組。 使用浮點數座標。預設情況下,這些浮點值為 32 位精度,與始終為 64 位的 :ref:`float` 並不相同。如果需要雙精度,請在編譯引擎時使用 ``precision=double`` 選項。 對應的整數版本見 :ref:`Vector4i`\ 。 \ **注意:**\ 在布林語境中,如果 Vector4 等於 ``Vector4(0, 0, 0, 0)`` 則求值結果為 ``false``\ 。否則 Vector4 的求值結果始終為 ``true``\ 。 .. rst-class:: classref-reftable-group 屬性 ---- .. table:: :widths: auto +---------------------------+------------------------------------+---------+ | :ref:`float` | :ref:`w` | ``0.0`` | +---------------------------+------------------------------------+---------+ | :ref:`float` | :ref:`x` | ``0.0`` | +---------------------------+------------------------------------+---------+ | :ref:`float` | :ref:`y` | ``0.0`` | +---------------------------+------------------------------------+---------+ | :ref:`float` | :ref:`z` | ``0.0`` | +---------------------------+------------------------------------+---------+ .. rst-class:: classref-reftable-group 建構子 ------ .. table:: :widths: auto +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`Vector4`\ (\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`Vector4`\ (\ from\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`Vector4`\ (\ from\: :ref:`Vector4i`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`Vector4`\ (\ x\: :ref:`float`, y\: :ref:`float`, z\: :ref:`float`, w\: :ref:`float`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group 方法 ---- .. table:: :widths: auto +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`abs`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`ceil`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`clamp`\ (\ min\: :ref:`Vector4`, max\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`clampf`\ (\ min\: :ref:`float`, max\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`cubic_interpolate`\ (\ b\: :ref:`Vector4`, pre_a\: :ref:`Vector4`, post_b\: :ref:`Vector4`, weight\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`cubic_interpolate_in_time`\ (\ b\: :ref:`Vector4`, pre_a\: :ref:`Vector4`, post_b\: :ref:`Vector4`, weight\: :ref:`float`, b_t\: :ref:`float`, pre_a_t\: :ref:`float`, post_b_t\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`direction_to`\ (\ to\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`distance_squared_to`\ (\ to\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`distance_to`\ (\ to\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`dot`\ (\ with\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`floor`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`inverse`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_equal_approx`\ (\ to\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_finite`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_normalized`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_zero_approx`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`length`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`length_squared`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`lerp`\ (\ to\: :ref:`Vector4`, weight\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`max`\ (\ with\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`max_axis_index`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`maxf`\ (\ with\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`min`\ (\ with\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`min_axis_index`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`minf`\ (\ with\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`normalized`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`posmod`\ (\ mod\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`posmodv`\ (\ modv\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`round`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`sign`\ (\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`snapped`\ (\ step\: :ref:`Vector4`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`snappedf`\ (\ step\: :ref:`float`\ ) |const| | +-------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group 運算子 ------ .. table:: :widths: auto +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator !=`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator *`\ (\ right\: :ref:`Projection`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator *`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator *`\ (\ right\: :ref:`float`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator *`\ (\ right\: :ref:`int`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator +`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator -`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator /`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator /`\ (\ right\: :ref:`float`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator /`\ (\ right\: :ref:`int`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator \<`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator \<=`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator ==`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator >`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`operator >=`\ (\ right\: :ref:`Vector4`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`operator []`\ (\ index\: :ref:`int`\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator unary+`\ (\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ | :ref:`Vector4` | :ref:`operator unary-`\ (\ ) | +-------------------------------+-------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 列舉 ---- .. _enum_Vector4_Axis: .. rst-class:: classref-enumeration enum **Axis**: :ref:`🔗` .. _class_Vector4_constant_AXIS_X: .. rst-class:: classref-enumeration-constant :ref:`Axis` **AXIS_X** = ``0`` X 軸的列舉值。由 :ref:`max_axis_index()` 和 :ref:`min_axis_index()` 返回。 .. _class_Vector4_constant_AXIS_Y: .. rst-class:: classref-enumeration-constant :ref:`Axis` **AXIS_Y** = ``1`` Y 軸的列舉值。由 :ref:`max_axis_index()` 和 :ref:`min_axis_index()` 返回。 .. _class_Vector4_constant_AXIS_Z: .. rst-class:: classref-enumeration-constant :ref:`Axis` **AXIS_Z** = ``2`` Z 軸的列舉值。由 :ref:`max_axis_index()` 和 :ref:`min_axis_index()` 返回。 .. _class_Vector4_constant_AXIS_W: .. rst-class:: classref-enumeration-constant :ref:`Axis` **AXIS_W** = ``3`` W 軸的列舉值。由 :ref:`max_axis_index()` 和 :ref:`min_axis_index()` 返回。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 常數 ---- .. _class_Vector4_constant_ZERO: .. rst-class:: classref-constant **ZERO** = ``Vector4(0, 0, 0, 0)`` :ref:`🔗` 零向量,所有分量都設定為 ``0`` 的向量。 .. _class_Vector4_constant_ONE: .. rst-class:: classref-constant **ONE** = ``Vector4(1, 1, 1, 1)`` :ref:`🔗` 一向量,所有分量都設定為 ``1`` 的向量。 .. _class_Vector4_constant_INF: .. rst-class:: classref-constant **INF** = ``Vector4(inf, inf, inf, inf)`` :ref:`🔗` 無窮大向量,所有分量都設定為 :ref:`@GDScript.INF` 的向量。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 屬性說明 -------- .. _class_Vector4_property_w: .. rst-class:: classref-property :ref:`float` **w** = ``0.0`` :ref:`🔗` 該向量的 W 分量。也可以通過使用索引位置 ``[3]`` 存取。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_property_x: .. rst-class:: classref-property :ref:`float` **x** = ``0.0`` :ref:`🔗` 向量的 X 分量。也可以通過使用索引位置 ``[0]`` 存取。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_property_y: .. rst-class:: classref-property :ref:`float` **y** = ``0.0`` :ref:`🔗` 向量的 Y 分量。也可以通過使用索引位置 ``[1]`` 存取。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_property_z: .. rst-class:: classref-property :ref:`float` **z** = ``0.0`` :ref:`🔗` 向量的 Z 分量。也可以通過使用索引位置 ``[2]`` 存取。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 建構子說明 ---------- .. _class_Vector4_constructor_Vector4: .. rst-class:: classref-constructor :ref:`Vector4` **Vector4**\ (\ ) :ref:`🔗` 建構預設初始化的 **Vector4**\ ,所有分量都為 ``0``\ 。 .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`Vector4` **Vector4**\ (\ from\: :ref:`Vector4`\ ) 建構給定 **Vector4** 的副本。 .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`Vector4` **Vector4**\ (\ from\: :ref:`Vector4i`\ ) 從給定的 :ref:`Vector4i` 建構新的 **Vector4**\ 。 .. rst-class:: classref-item-separator ---- .. rst-class:: classref-constructor :ref:`Vector4` **Vector4**\ (\ x\: :ref:`float`, y\: :ref:`float`, z\: :ref:`float`, w\: :ref:`float`\ ) 返回具有給定分量的 **Vector4**\ 。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 方法說明 -------- .. _class_Vector4_method_abs: .. rst-class:: classref-method :ref:`Vector4` **abs**\ (\ ) |const| :ref:`🔗` 返回一個新向量,其所有分量都是絕對值,即正值。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_ceil: .. rst-class:: classref-method :ref:`Vector4` **ceil**\ (\ ) |const| :ref:`🔗` 返回一個新向量,所有的分量都是向上四捨五入(正無窮大方向)。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_clamp: .. rst-class:: classref-method :ref:`Vector4` **clamp**\ (\ min\: :ref:`Vector4`, max\: :ref:`Vector4`\ ) |const| :ref:`🔗` 返回一個新向量,每個分量都使用 :ref:`@GlobalScope.clamp()` 限制在 ``min`` 和 ``max`` 之間。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_clampf: .. rst-class:: classref-method :ref:`Vector4` **clampf**\ (\ min\: :ref:`float`, max\: :ref:`float`\ ) |const| :ref:`🔗` Returns a new vector with all components clamped between ``min`` and ``max``, by running :ref:`@GlobalScope.clamp()` on each component. .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_cubic_interpolate: .. rst-class:: classref-method :ref:`Vector4` **cubic_interpolate**\ (\ b\: :ref:`Vector4`, pre_a\: :ref:`Vector4`, post_b\: :ref:`Vector4`, weight\: :ref:`float`\ ) |const| :ref:`🔗` 返回該向量和 ``b`` 之間進行三次插值 ``weight`` 處的結果,使用 ``pre_a`` 和 ``post_b`` 作為控制柄。\ ``weight`` 在 0.0 到 1.0 的範圍內,代表插值的量。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_cubic_interpolate_in_time: .. rst-class:: classref-method :ref:`Vector4` **cubic_interpolate_in_time**\ (\ b\: :ref:`Vector4`, pre_a\: :ref:`Vector4`, post_b\: :ref:`Vector4`, weight\: :ref:`float`, b_t\: :ref:`float`, pre_a_t\: :ref:`float`, post_b_t\: :ref:`float`\ ) |const| :ref:`🔗` Performs a cubic interpolation between this vector and ``b`` using ``pre_a`` and ``post_b`` as handles, and returns the result at position ``weight``. ``weight`` is on the range of 0.0 to 1.0, representing the amount of interpolation. It can perform smoother interpolation than :ref:`cubic_interpolate()` by the time values. .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_direction_to: .. rst-class:: classref-method :ref:`Vector4` **direction_to**\ (\ to\: :ref:`Vector4`\ ) |const| :ref:`🔗` 返回從該向量指向 ``to`` 的正規化向量。相當於使用 ``(b - a).normalized()``\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_distance_squared_to: .. rst-class:: classref-method :ref:`float` **distance_squared_to**\ (\ to\: :ref:`Vector4`\ ) |const| :ref:`🔗` 返回該向量與 ``to`` 之間的距離的平方。 該方法比 :ref:`distance_to()` 運作得更快,因此請在需要比較向量或者用於某些公式的平方距離時,優先使用這個方法。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_distance_to: .. rst-class:: classref-method :ref:`float` **distance_to**\ (\ to\: :ref:`Vector4`\ ) |const| :ref:`🔗` 返回該向量與 ``to`` 之間的距離。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_dot: .. rst-class:: classref-method :ref:`float` **dot**\ (\ with\: :ref:`Vector4`\ ) |const| :ref:`🔗` 返回該向量與 ``with`` 的點積。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_floor: .. rst-class:: classref-method :ref:`Vector4` **floor**\ (\ ) |const| :ref:`🔗` 返回一個新的向量,所有的向量都被四捨五入,向負無窮大。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_inverse: .. rst-class:: classref-method :ref:`Vector4` **inverse**\ (\ ) |const| :ref:`🔗` 返回該向量的逆向量。與 ``Vector4(1.0 / v.x, 1.0 / v.y, 1.0 / v.z, 1.0 / v.w)`` 相同。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_is_equal_approx: .. rst-class:: classref-method :ref:`bool` **is_equal_approx**\ (\ to\: :ref:`Vector4`\ ) |const| :ref:`🔗` 如果這個向量與 ``to`` 大致相等,則返回 ``true``\ ,判斷方法是對每個分量執行 :ref:`@GlobalScope.is_equal_approx()`\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_is_finite: .. rst-class:: classref-method :ref:`bool` **is_finite**\ (\ ) |const| :ref:`🔗` 如果該向量無窮,則返回 ``true``\ ,判斷方法是對每個分量呼叫 :ref:`@GlobalScope.is_finite()`\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_is_normalized: .. rst-class:: classref-method :ref:`bool` **is_normalized**\ (\ ) |const| :ref:`🔗` 如果該向量是正規化的,即長度約等於 1,則返回 ``true``\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_is_zero_approx: .. rst-class:: classref-method :ref:`bool` **is_zero_approx**\ (\ ) |const| :ref:`🔗` 如果該向量的值大約為零,則返回 ``true``\ ,判斷方法是對每個分量運作 :ref:`@GlobalScope.is_zero_approx()`\ 。 該方法比使用 :ref:`is_equal_approx()` 和零向量比較要快。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_length: .. rst-class:: classref-method :ref:`float` **length**\ (\ ) |const| :ref:`🔗` 返回這個向量的長度,即大小。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_length_squared: .. rst-class:: classref-method :ref:`float` **length_squared**\ (\ ) |const| :ref:`🔗` 返回這個向量的平方長度,即平方大小。 這個方法比 :ref:`length()` 運作得更快,所以如果你需要比較向量或需要一些公式的平方距離時,更喜歡用它。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_lerp: .. rst-class:: classref-method :ref:`Vector4` **lerp**\ (\ to\: :ref:`Vector4`, weight\: :ref:`float`\ ) |const| :ref:`🔗` 返回此向量和 ``to`` 之間,按數量 ``weight`` 線性插值結果。\ ``weight`` 在 ``0.0`` 到 ``1.0`` 的範圍內,代表插值的量。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_max: .. rst-class:: classref-method :ref:`Vector4` **max**\ (\ with\: :ref:`Vector4`\ ) |const| :ref:`🔗` Returns the component-wise maximum of this and ``with``, equivalent to ``Vector4(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z), maxf(w, with.w))``. .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_max_axis_index: .. rst-class:: classref-method :ref:`int` **max_axis_index**\ (\ ) |const| :ref:`🔗` 返回該向量中最大值的軸。見 ``AXIS_*`` 常數。如果所有分量相等,則該方法返回 :ref:`AXIS_X`\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_maxf: .. rst-class:: classref-method :ref:`Vector4` **maxf**\ (\ with\: :ref:`float`\ ) |const| :ref:`🔗` Returns the component-wise maximum of this and ``with``, equivalent to ``Vector4(maxf(x, with), maxf(y, with), maxf(z, with), maxf(w, with))``. .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_min: .. rst-class:: classref-method :ref:`Vector4` **min**\ (\ with\: :ref:`Vector4`\ ) |const| :ref:`🔗` Returns the component-wise minimum of this and ``with``, equivalent to ``Vector4(minf(x, with.x), minf(y, with.y), minf(z, with.z), minf(w, with.w))``. .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_min_axis_index: .. rst-class:: classref-method :ref:`int` **min_axis_index**\ (\ ) |const| :ref:`🔗` 返回該向量中最小值的軸。見 ``AXIS_*`` 常數。如果所有分量相等,則該方法返回 :ref:`AXIS_W`\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_minf: .. rst-class:: classref-method :ref:`Vector4` **minf**\ (\ with\: :ref:`float`\ ) |const| :ref:`🔗` Returns the component-wise minimum of this and ``with``, equivalent to ``Vector4(minf(x, with), minf(y, with), minf(z, with), minf(w, with))``. .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_normalized: .. rst-class:: classref-method :ref:`Vector4` **normalized**\ (\ ) |const| :ref:`🔗` Returns the result of scaling the vector to unit length. Equivalent to ``v / v.length()``. Returns ``(0, 0, 0, 0)`` if ``v.length() == 0``. See also :ref:`is_normalized()`. \ **Note:** This function may return incorrect values if the input vector length is near zero. .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_posmod: .. rst-class:: classref-method :ref:`Vector4` **posmod**\ (\ mod\: :ref:`float`\ ) |const| :ref:`🔗` 返回由該向量的分量與 ``mod`` 執行 :ref:`@GlobalScope.fposmod()` 運算後組成的向量。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_posmodv: .. rst-class:: classref-method :ref:`Vector4` **posmodv**\ (\ modv\: :ref:`Vector4`\ ) |const| :ref:`🔗` 返回由該向量的分量與 ``modv`` 的分量執行 :ref:`@GlobalScope.fposmod()` 運算後組成的向量。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_round: .. rst-class:: classref-method :ref:`Vector4` **round**\ (\ ) |const| :ref:`🔗` 返回所有分量都被四捨五入為最接近的整數的向量,中間情況向遠離零的方向四捨五入。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_sign: .. rst-class:: classref-method :ref:`Vector4` **sign**\ (\ ) |const| :ref:`🔗` 返回新的向量,分量如果為正則設為 ``1.0``\ ,如果為負則設為 ``-1.0``\ ,如果為零則設為 ``0.0``\ 。結果與對每個分量呼叫 :ref:`@GlobalScope.sign()` 一致。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_snapped: .. rst-class:: classref-method :ref:`Vector4` **snapped**\ (\ step\: :ref:`Vector4`\ ) |const| :ref:`🔗` 返回新的向量,每個分量都吸附到了與 ``step`` 中對應分量最接近的倍數。也可以用於將分量四捨五入至小數點後的任意位置。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_method_snappedf: .. rst-class:: classref-method :ref:`Vector4` **snappedf**\ (\ step\: :ref:`float`\ ) |const| :ref:`🔗` Returns a new vector with each component snapped to the nearest multiple of ``step``. This can also be used to round the components to an arbitrary number of decimals. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 運算子說明 ---------- .. _class_Vector4_operator_neq_Vector4: .. rst-class:: classref-operator :ref:`bool` **operator !=**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` 如果向量不相等,則返回 ``true``\ 。 \ **注意:**\ 由於浮點數精度誤差,請考慮改用 :ref:`is_equal_approx()`\ ,會更可靠。 \ **注意:**\ 包含 :ref:`@GDScript.NAN` 元素的向量的行為與其他向量不同。因此,如果包含 NaN,則這個方法的結果可能不準確。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_mul_Projection: .. rst-class:: classref-operator :ref:`Vector4` **operator ***\ (\ right\: :ref:`Projection`\ ) :ref:`🔗` Transforms (multiplies) the **Vector4** by the transpose of the given :ref:`Projection` matrix. For transforming by inverse of a projection ``projection.inverse() * vector`` can be used instead. See :ref:`Projection.inverse()`. .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_mul_Vector4: .. rst-class:: classref-operator :ref:`Vector4` **operator ***\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` Multiplies each component of the **Vector4** by the components of the given **Vector4**. :: print(Vector4(10, 20, 30, 40) * Vector4(3, 4, 5, 6)) # Prints (30.0, 80.0, 150.0, 240.0) .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_mul_float: .. rst-class:: classref-operator :ref:`Vector4` **operator ***\ (\ right\: :ref:`float`\ ) :ref:`🔗` Multiplies each component of the **Vector4** by the given :ref:`float`. :: print(Vector4(10, 20, 30, 40) * 2) # Prints (20.0, 40.0, 60.0, 80.0) .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_mul_int: .. rst-class:: classref-operator :ref:`Vector4` **operator ***\ (\ right\: :ref:`int`\ ) :ref:`🔗` 將該 **Vector4** 的每個分量乘以給定的 :ref:`int`\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_sum_Vector4: .. rst-class:: classref-operator :ref:`Vector4` **operator +**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` Adds each component of the **Vector4** by the components of the given **Vector4**. :: print(Vector4(10, 20, 30, 40) + Vector4(3, 4, 5, 6)) # Prints (13.0, 24.0, 35.0, 46.0) .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_dif_Vector4: .. rst-class:: classref-operator :ref:`Vector4` **operator -**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` Subtracts each component of the **Vector4** by the components of the given **Vector4**. :: print(Vector4(10, 20, 30, 40) - Vector4(3, 4, 5, 6)) # Prints (7.0, 16.0, 25.0, 34.0) .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_div_Vector4: .. rst-class:: classref-operator :ref:`Vector4` **operator /**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` Divides each component of the **Vector4** by the components of the given **Vector4**. :: print(Vector4(10, 20, 30, 40) / Vector4(2, 5, 3, 4)) # Prints (5.0, 4.0, 10.0, 10.0) .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_div_float: .. rst-class:: classref-operator :ref:`Vector4` **operator /**\ (\ right\: :ref:`float`\ ) :ref:`🔗` Divides each component of the **Vector4** by the given :ref:`float`. :: print(Vector4(10, 20, 30, 40) / 2) # Prints (5.0, 10.0, 15.0, 20.0) .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_div_int: .. rst-class:: classref-operator :ref:`Vector4` **operator /**\ (\ right\: :ref:`int`\ ) :ref:`🔗` 將該 **Vector4** 的每個分量除以給定的 :ref:`int`\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_lt_Vector4: .. rst-class:: classref-operator :ref:`bool` **operator <**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` 比較兩個 **Vector4** 向量,首先檢查左向量的 X 值是否小於 ``right`` 向量的 X 值。如果 X 值完全相等,則用相同的方法檢查兩個向量的 Y 值、Z 值、W 值。該運算符可用於向量排序。 \ **注意:**\ 包含 :ref:`@GDScript.NAN` 元素的向量的行為與其他向量不同。因此,如果包含 NaN,則這個方法的結果可能不準確。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_lte_Vector4: .. rst-class:: classref-operator :ref:`bool` **operator <=**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` 比較兩個 **Vector4** 向量,首先檢查左向量的 X 值是否小於等於 ``right`` 向量的 X 值。如果 X 值完全相等,則用相同的方法檢查兩個向量的 Y 值、Z 值、W 值。該運算子可用於向量排序。 \ **注意:**\ 包含 :ref:`@GDScript.NAN` 元素的向量的行為與其他向量不同。因此,如果包含 NaN,則這個方法的結果可能不準確。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_eq_Vector4: .. rst-class:: classref-operator :ref:`bool` **operator ==**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` 如果向量完全相等,則返回 ``true``\ 。 \ **注意:**\ 由於浮點數精度誤差,請考慮改用 :ref:`is_equal_approx()`\ ,會更可靠。 \ **注意:**\ 包含 :ref:`@GDScript.NAN` 元素的向量的行為與其他向量不同。因此,如果包含 NaN,則這個方法的結果可能不準確。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_gt_Vector4: .. rst-class:: classref-operator :ref:`bool` **operator >**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` 比較兩個 **Vector4** 向量,首先檢查左向量的 X 值是否大於 ``right`` 向量的 X 值。如果 X 值完全相等,則用相同的方法檢查兩個向量的 Y 值、Z 值、W 值。該運算符可用於向量排序。 \ **注意:**\ 包含 :ref:`@GDScript.NAN` 元素的向量的行為與其他向量不同。因此,如果包含 NaN,則這個方法的結果可能不準確。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_gte_Vector4: .. rst-class:: classref-operator :ref:`bool` **operator >=**\ (\ right\: :ref:`Vector4`\ ) :ref:`🔗` 比較兩個 **Vector4** 向量,首先檢查左向量的 X 值是否大於等於 ``right`` 向量的 X 值。如果 X 值完全相等,則用相同的方法檢查兩個向量的 Y 值、Z 值、W 值。該運算子可用於向量排序。 \ **注意:**\ 包含 :ref:`@GDScript.NAN` 元素的向量的行為與其他向量不同。因此,如果包含 NaN,則這個方法的結果可能不準確。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_idx_int: .. rst-class:: classref-operator :ref:`float` **operator []**\ (\ index\: :ref:`int`\ ) :ref:`🔗` 使用向量分量的 ``index`` 來存取向量分量。\ ``v[0]`` 等價於 ``v.x``\ ,\ ``v[1]`` 等價於 ``v.y``\ ,\ ``v[2]`` 等價於 ``v.z``\ ,\ ``v[3]`` 等價於 ``v.w``\ 。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_unplus: .. rst-class:: classref-operator :ref:`Vector4` **operator unary+**\ (\ ) :ref:`🔗` 返回與 ``+`` 不存在時相同的值。單目 ``+`` 沒有作用,但有時可以使你的程式碼更具可讀性。 .. rst-class:: classref-item-separator ---- .. _class_Vector4_operator_unminus: .. rst-class:: classref-operator :ref:`Vector4` **operator unary-**\ (\ ) :ref:`🔗` 返回該 **Vector4** 的負值。和寫 ``Vector4(-v.x, -v.y, -v.z, -v.w)`` 是一樣的。該操作在保持相同幅度的同時,翻轉向量的方向。對於浮點數,零也有正負兩種。 .. |virtual| replace:: :abbr:`virtual (本方法通常需要使用者覆寫才能生效。)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (本方法沒有副作用。不會修改該實例的任何成員變數。)` .. |vararg| replace:: :abbr:`vararg (本方法除了這裡描述的參數外,還可以接受任意數量的參數。)` .. |constructor| replace:: :abbr:`constructor (本方法用於建構一個型別。)` .. |static| replace:: :abbr:`static (本方法無需實例即可呼叫,因此可以直接使用類別名稱呼叫。)` .. |operator| replace:: :abbr:`operator (本方法描述將本型別作為左運算元時可用的有效運算子。)` .. |bitfield| replace:: :abbr:`BitField (此值是由下列旗標組成的位元遮罩整數。)` .. |void| replace:: :abbr:`void (無回傳值。)`