Struct godot::prelude::Vector3

#[repr(C)]
pub struct Vector3 { pub x: f32, pub y: f32, pub z: f32, }
Expand description

Vector used for 3D math using floating point coordinates.

3-element structure that can be used to represent positions in 3D space or any other triple of numeric values.

It uses floating-point coordinates of 32-bit precision, unlike the engine’s float type which is always 64-bit. The engine can be compiled with the option precision=double to use 64-bit vectors; use the gdext library with the double-precision feature in that case.

See Vector3i for its integer counterpart.

Fields§

§x: f32

The vector’s X component.

§y: f32

The vector’s Y component.

§z: f32

The vector’s Z component.

Implementations§

§

impl Vector3

pub const ZERO: Vector3 = _

Vector with all components set to 0.0.

pub const ONE: Vector3 = _

Vector with all components set to 1.0.

pub const LEFT: Vector3 = _

Unit vector in -X direction. Can be interpreted as left in an untransformed 3D world.

pub const RIGHT: Vector3 = _

Unit vector in +X direction. Can be interpreted as right in an untransformed 3D world.

pub const UP: Vector3 = _

Unit vector in +Y direction. Typically interpreted as up in a 3D world.

pub const DOWN: Vector3 = _

Unit vector in -Y direction. Typically interpreted as down in a 3D world.

pub const FORWARD: Vector3 = _

Unit vector in -Z direction. Can be interpreted as “into the screen” in an untransformed 3D world.

pub const BACK: Vector3 = _

Unit vector in +Z direction. Can be interpreted as “out of the screen” in an untransformed 3D world.

pub const fn new(x: f32, y: f32, z: f32) -> Vector3

Returns a Vector3 with the given components.

pub const fn splat(v: f32) -> Vector3

Returns a new Vector3 with all components set to v.

pub const fn from_vector3i(v: Vector3i) -> Vector3

Constructs a new Vector3 from a Vector3i.

pub fn angle_to(self, to: Vector3) -> f32

pub fn bounce(self, normal: Vector3) -> Vector3

pub fn ceil(self) -> Vector3

pub fn clamp(self, min: Vector3, max: Vector3) -> Vector3

pub fn cross(self, with: Vector3) -> Vector3

pub fn direction_to(self, to: Vector3) -> Vector3

pub fn distance_squared_to(self, to: Vector3) -> f32

pub fn distance_to(self, to: Vector3) -> f32

pub fn dot(self, with: Vector3) -> f32

pub fn floor(self) -> Vector3

pub fn inverse(self) -> Vector3

pub fn is_finite(self) -> bool

pub fn is_normalized(self) -> bool

pub fn length_squared(self) -> f32

pub fn limit_length(self, length: Option<f32>) -> Vector3

pub fn max_axis_index(self) -> Vector3Axis

pub fn min_axis_index(self) -> Vector3Axis

pub fn move_toward(self, to: Vector3, delta: f32) -> Vector3

pub fn project(self, b: Vector3) -> Vector3

pub fn reflect(self, normal: Vector3) -> Vector3

pub fn round(self) -> Vector3

pub fn signed_angle_to(self, to: Vector3, axis: Vector3) -> f32

pub fn slerp(self, to: Vector3, weight: f32) -> Vector3

Returns the spherical linear interpolation between the vector and to by the weight amount.

The variable weight is representing the amount of interpolation, which is on the range of 0.0 to 1.0.

Length is also interpolated in the case that the input vectors have different lengths. If both input vectors have zero length or are collinear to each other, the method instead behaves like Vector3::lerp.

pub fn slide(self, normal: Vector3) -> Vector3

pub fn rotated(self, axis: Vector3, angle: f32) -> Vector3

Returns this vector rotated around axis by angle radians. axis must be normalized.

§Panics

If axis is not normalized.

pub fn coords(&self) -> (f32, f32, f32)

§

impl Vector3

pub fn abs(self) -> Vector3

Returns a new vector with all components in absolute values (i.e. positive or zero).

pub fn coord_min(self, other: Vector3) -> Vector3

Returns a new vector containing the minimum of the two vectors, component-wise.

pub fn coord_max(self, other: Vector3) -> Vector3

Returns a new vector containing the maximum of the two vectors, component-wise.

§

impl Vector3

pub fn length(self) -> f32

Returns the length (magnitude) of this vector.

pub fn normalized(self) -> Vector3

Returns the vector scaled to unit length. Equivalent to self / self.length(). See also is_normalized().

If the vector is zero, the result is also zero.

§

impl Vector3

pub fn lerp(self, other: Vector3, weight: f32) -> Vector3

pub fn bezier_derivative( self, control_1: Vector3, control_2: Vector3, end: Vector3, t: f32 ) -> Vector3

pub fn bezier_interpolate( self, control_1: Vector3, control_2: Vector3, end: Vector3, t: f32 ) -> Vector3

pub fn cubic_interpolate( self, b: Vector3, pre_a: Vector3, post_b: Vector3, weight: f32 ) -> Vector3

pub fn cubic_interpolate_in_time( self, b: Vector3, pre_a: Vector3, post_b: Vector3, weight: f32, b_t: f32, pre_a_t: f32, post_b_t: f32 ) -> Vector3

pub fn is_zero_approx(self) -> bool

pub fn posmod(self, pmod: f32) -> Vector3

pub fn posmodv(self, modv: Vector3) -> Vector3

pub fn sign(self) -> Vector3

pub fn snapped(self, step: Vector3) -> Vector3

Trait Implementations§

§

impl Add for Vector3

§

type Output = Vector3

The resulting type after applying the + operator.
§

fn add(self, rhs: Vector3) -> <Vector3 as Add>::Output

Performs the + operation. Read more
§

impl AddAssign for Vector3

§

fn add_assign(&mut self, rhs: Vector3)

Performs the += operation. Read more
§

impl ApproxEq for Vector3

§

fn approx_eq(&self, other: &Vector3) -> bool

§

impl Clone for Vector3

§

fn clone(&self) -> Vector3

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for Vector3

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Default for Vector3

§

fn default() -> Vector3

Returns the “default value” for a type. Read more
§

impl Display for Vector3

Formats the vector like Godot: (x, y, z).

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Div<f32> for Vector3

§

type Output = Vector3

The resulting type after applying the / operator.
§

fn div(self, rhs: f32) -> <Vector3 as Div<f32>>::Output

Performs the / operation. Read more
§

impl Div for Vector3

§

type Output = Vector3

The resulting type after applying the / operator.
§

fn div(self, rhs: Vector3) -> <Vector3 as Div>::Output

Performs the / operation. Read more
§

impl DivAssign<f32> for Vector3

§

fn div_assign(&mut self, rhs: f32)

Performs the /= operation. Read more
§

impl DivAssign for Vector3

§

fn div_assign(&mut self, rhs: Vector3)

Performs the /= operation. Read more
§

impl Export for Vector3

§

fn default_export_info() -> PropertyHintInfo

The export info to use for an exported field of this type, if no other export info is specified.
§

impl Extend<Vector3> for PackedVector3Array

Extends aPackedVector3Array with the contents of an iterator

§

fn extend<I>(&mut self, iter: I)
where I: IntoIterator<Item = Vector3>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
§

impl FromGodot for Vector3

§

fn try_from_godot( via: <Vector3 as GodotConvert>::Via ) -> Result<Vector3, ConvertError>

Performs the conversion.
§

fn from_godot(via: Self::Via) -> Self

⚠️ Performs the conversion. Read more
§

fn try_from_variant(variant: &Variant) -> Result<Self, ConvertError>

Performs the conversion from a Variant.
§

fn from_variant(variant: &Variant) -> Self

⚠️ Performs the conversion from a Variant. Read more
§

impl FromIterator<Vector3> for PackedVector3Array

Creates a PackedVector3Array from an iterator.

§

fn from_iter<I>(iter: I) -> PackedVector3Array
where I: IntoIterator<Item = Vector3>,

Creates a value from an iterator. Read more
§

impl GodotConvert for Vector3

§

type Via = Vector3

The type through which Self is represented in Godot.
§

impl Index<Vector3Axis> for Vector3

§

type Output = f32

The returned type after indexing.
§

fn index(&self, axis: Vector3Axis) -> &f32

Performs the indexing (container[index]) operation. Read more
§

impl IndexMut<Vector3Axis> for Vector3

§

fn index_mut(&mut self, axis: Vector3Axis) -> &mut f32

Performs the mutable indexing (container[index]) operation. Read more
§

impl Mul<Vector3> for Basis

§

type Output = Vector3

The resulting type after applying the * operator.
§

fn mul(self, rhs: Vector3) -> <Basis as Mul<Vector3>>::Output

Performs the * operation. Read more
§

impl Mul<Vector3> for Transform3D

§

type Output = Vector3

The resulting type after applying the * operator.
§

fn mul(self, rhs: Vector3) -> <Transform3D as Mul<Vector3>>::Output

Performs the * operation. Read more
§

impl Mul<f32> for Vector3

§

type Output = Vector3

The resulting type after applying the * operator.
§

fn mul(self, rhs: f32) -> <Vector3 as Mul<f32>>::Output

Performs the * operation. Read more
§

impl Mul for Vector3

§

type Output = Vector3

The resulting type after applying the * operator.
§

fn mul(self, rhs: Vector3) -> <Vector3 as Mul>::Output

Performs the * operation. Read more
§

impl MulAssign<f32> for Vector3

§

fn mul_assign(&mut self, rhs: f32)

Performs the *= operation. Read more
§

impl MulAssign for Vector3

§

fn mul_assign(&mut self, rhs: Vector3)

Performs the *= operation. Read more
§

impl Neg for Vector3

§

type Output = Vector3

The resulting type after applying the - operator.
§

fn neg(self) -> <Vector3 as Neg>::Output

Performs the unary - operation. Read more
§

impl PartialEq for Vector3

§

fn eq(&self, other: &Vector3) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl<'a> Product<&'a Vector3> for Vector3

§

fn product<I>(iter: I) -> Vector3
where I: Iterator<Item = &'a Vector3>,

Element-wise product of all vectors in the iterator.

§

impl Product for Vector3

§

fn product<I>(iter: I) -> Vector3
where I: Iterator<Item = Vector3>,

Element-wise product of all vectors in the iterator.

§

impl Sub for Vector3

§

type Output = Vector3

The resulting type after applying the - operator.
§

fn sub(self, rhs: Vector3) -> <Vector3 as Sub>::Output

Performs the - operation. Read more
§

impl SubAssign for Vector3

§

fn sub_assign(&mut self, rhs: Vector3)

Performs the -= operation. Read more
§

impl<'a> Sum<&'a Vector3> for Vector3

§

fn sum<I>(iter: I) -> Vector3
where I: Iterator<Item = &'a Vector3>,

Element-wise sum of all vectors in the iterator.

§

impl Sum for Vector3

§

fn sum<I>(iter: I) -> Vector3
where I: Iterator<Item = Vector3>,

Element-wise sum of all vectors in the iterator.

§

impl ToGodot for Vector3

§

fn to_godot(&self) -> <Vector3 as GodotConvert>::Via

Converts this type to the Godot type by reference, usually by cloning.
§

fn into_godot(self) -> <Vector3 as GodotConvert>::Via

Converts this type to the Godot type. Read more
§

fn to_variant(&self) -> Variant

Converts this type to a Variant.
§

impl TypeStringHint for Vector3

§

fn type_string() -> String

Returns the representation of this type as a type string. Read more
§

impl Var for Vector3

§

impl ArrayElement for Vector3

§

impl Copy for Vector3

§

impl GodotType for Vector3

§

impl StructuralPartialEq for Vector3

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.