Class Vec3d

java.lang.Object
net.minecraft.util.math.Vec3d
All Implemented Interfaces:
Position

public class Vec3d extends Object implements Position
An immutable vector composed of 3 doubles.

This vector class is used for representing position, velocity, rotation, color, etc.

This vector has proper hashCode() and equals(Object) implementations and can be used as a map key.

See Also:
Mappings:
Namespace Name
official dna
intermediary net/minecraft/class_243
named net/minecraft/util/math/Vec3d
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    final double
    The X coordinate of this vector.
    final double
    The Y coordinate of this vector.
    final double
    The Z coordinate of this vector.
    static final Vec3d
    The zero vector (0, 0, 0).
  • Constructor Summary

    Constructors
    Constructor
    Description
    Vec3d(double x, double y, double z)
    Creates a vector of the given coordinates.
    Vec3d(Vec3f vec)
    Copies the given vector.
  • Method Summary

    Modifier and Type
    Method
    Description
    add(double x, double y, double z)
    Returns the sum of this vector and the given vector.
    add(Vec3d vec)
    Returns the sum of this vector and the given vector.
    Returns the cross product of this vector and the given vector.
    double
    Returns the distance between this vector and the given vector.
    double
    Returns the dot product of this vector and the given vector.
    boolean
     
    Applies the floor function to the coordinates chosen by the given axes.
    static Vec3d
    fromPolar(float pitch, float yaw)
    Converts pitch and yaw into a direction vector.
    static Vec3d
    Converts pitch and yaw into a direction vector.
    double
    Returns the coordinate chosen by the given axis.
    final double
    Returns the X coordinate.
    final double
    Returns the Y coordinate.
    final double
    Returns the Z coordinate.
    int
     
    double
    Returns the horizontal length of this vector.
    double
    Returns the squared horizontal length of this vector.
    boolean
    isInRange(Position pos, double radius)
    Checks if the distance between this vector and the given position is less than radius.
    double
    Returns the length of this vector.
    double
    Returns the squared length of this vector.
    lerp(Vec3d to, double delta)
    Performs linear interpolation from this vector to the given vector.
    multiply(double value)
    Return a vector whose coordinates are the coordinates of this vector each multiplied by the given scalar value.
    multiply(double x, double y, double z)
    Returns a vector whose coordinates are the product of each pair of coordinates in this vector and the given vector.
    Returns a vector whose coordinates are the product of each pair of coordinates in this vector and the given vector.
    Creates a vector with the same length but with the opposite direction.
    Normalizes this vector.
    static Vec3d
    of(Vec3i vec)
    Copies the given vector.
    static Vec3d
    Creates a vector representing the bottom center of the given block position.
    static Vec3d
    Creates a vector representing the center of the given block position.
    static Vec3d
    ofCenter(Vec3i vec, double deltaY)
    Creates a vector representing the center of the given block position but with the given offset for the Y coordinate.
    Subtracts this vector from the given vector.
    rotateX(float angle)
    Rotates this vector by the given angle counterclockwise around the X axis.
    rotateY(float angle)
    Rotates this vector by the given angle counterclockwise around the Y axis.
    rotateZ(float angle)
    Rotates this vector by the given angle counterclockwise around the Z axis.
    double
    squaredDistanceTo(double x, double y, double z)
    Returns the squared distance between this vector and the given vector.
    double
    Returns the squared distance between this vector and the given vector.
    subtract(double x, double y, double z)
    Subtracts the given vector from this vector.
    Subtracts the given vector from this vector.
     
    static Vec3d
    unpackRgb(int rgb)
    Converts a packed RGB color into a vector of (red, green, blue).

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • ZERO

      public static final Vec3d ZERO
      The zero vector (0, 0, 0).
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a:Ldna;
      intermediary field_1353 Lnet/minecraft/class_243;field_1353:Lnet/minecraft/class_243;
      named ZERO Lnet/minecraft/util/math/Vec3d;ZERO:Lnet/minecraft/util/math/Vec3d;
    • x

      public final double x
      The X coordinate of this vector.
      Mappings:
      Namespace Name Mixin selector
      official b Ldna;b:D
      intermediary field_1352 Lnet/minecraft/class_243;field_1352:D
      named x Lnet/minecraft/util/math/Vec3d;x:D
    • y

      public final double y
      The Y coordinate of this vector.
      Mappings:
      Namespace Name Mixin selector
      official c Ldna;c:D
      intermediary field_1351 Lnet/minecraft/class_243;field_1351:D
      named y Lnet/minecraft/util/math/Vec3d;y:D
    • z

      public final double z
      The Z coordinate of this vector.
      Mappings:
      Namespace Name Mixin selector
      official d Ldna;d:D
      intermediary field_1350 Lnet/minecraft/class_243;field_1350:D
      named z Lnet/minecraft/util/math/Vec3d;z:D
  • Constructor Details

    • Vec3d

      public Vec3d(double x, double y, double z)
      Creates a vector of the given coordinates.
      Mappings:
      Namespace Name Mixin selector
      official <init> Ldna;<init>(DDD)V
      intermediary <init> Lnet/minecraft/class_243;<init>(DDD)V
      named <init> Lnet/minecraft/util/math/Vec3d;<init>(DDD)V
    • Vec3d

      public Vec3d(Vec3f vec)
      Copies the given vector.
      Mappings:
      Namespace Name Mixin selector
      official <init> Ldna;<init>(Lk;)V
      intermediary <init> Lnet/minecraft/class_243;<init>(Lnet/minecraft/class_1160;)V
      named <init> Lnet/minecraft/util/math/Vec3d;<init>(Lnet/minecraft/util/math/Vec3f;)V
  • Method Details

    • unpackRgb

      public static Vec3d unpackRgb(int rgb)
      Converts a packed RGB color into a vector of (red, green, blue).
      Parameters:
      rgb - the color in the 0xRRGGBB format
      Returns:
      the vector representing the given color; each coordinate has value between 0 and 1
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(I)Ldna;
      intermediary method_24457 Lnet/minecraft/class_243;method_24457(I)Lnet/minecraft/class_243;
      named unpackRgb Lnet/minecraft/util/math/Vec3d;unpackRgb(I)Lnet/minecraft/util/math/Vec3d;
    • ofCenter

      public static Vec3d ofCenter(Vec3i vec)
      Creates a vector representing the center of the given block position.
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Lhb;)Ldna;
      intermediary method_24953 Lnet/minecraft/class_243;method_24953(Lnet/minecraft/class_2382;)Lnet/minecraft/class_243;
      named ofCenter Lnet/minecraft/util/math/Vec3d;ofCenter(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;
    • of

      public static Vec3d of(Vec3i vec)
      Copies the given vector.
      Mappings:
      Namespace Name Mixin selector
      official b Ldna;b(Lhb;)Ldna;
      intermediary method_24954 Lnet/minecraft/class_243;method_24954(Lnet/minecraft/class_2382;)Lnet/minecraft/class_243;
      named of Lnet/minecraft/util/math/Vec3d;of(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;
    • ofBottomCenter

      public static Vec3d ofBottomCenter(Vec3i vec)
      Creates a vector representing the bottom center of the given block position.

      The bottom center of a block position pos is (pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5).

      See Also:
      Mappings:
      Namespace Name Mixin selector
      official c Ldna;c(Lhb;)Ldna;
      intermediary method_24955 Lnet/minecraft/class_243;method_24955(Lnet/minecraft/class_2382;)Lnet/minecraft/class_243;
      named ofBottomCenter Lnet/minecraft/util/math/Vec3d;ofBottomCenter(Lnet/minecraft/util/math/Vec3i;)Lnet/minecraft/util/math/Vec3d;
    • ofCenter

      public static Vec3d ofCenter(Vec3i vec, double deltaY)
      Creates a vector representing the center of the given block position but with the given offset for the Y coordinate.
      Returns:
      a vector of (vec.getX() + 0.5, vec.getY() + deltaY, vec.getZ() + 0.5)
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Lhb;D)Ldna;
      intermediary method_26410 Lnet/minecraft/class_243;method_26410(Lnet/minecraft/class_2382;D)Lnet/minecraft/class_243;
      named ofCenter Lnet/minecraft/util/math/Vec3d;ofCenter(Lnet/minecraft/util/math/Vec3i;D)Lnet/minecraft/util/math/Vec3d;
    • relativize

      public Vec3d relativize(Vec3d vec)
      Subtracts this vector from the given vector.
      Returns:
      the difference between the given vector and this vector
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Ldna;)Ldna;
      intermediary method_1035 Lnet/minecraft/class_243;method_1035(Lnet/minecraft/class_243;)Lnet/minecraft/class_243;
      named relativize Lnet/minecraft/util/math/Vec3d;relativize(Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/Vec3d;
    • normalize

      public Vec3d normalize()
      Normalizes this vector.

      Normalized vector is a vector with the same direction but with length 1. Each coordinate of normalized vector has value between 0 and 1.

      Returns:
      the normalized vector of this vector
      Mappings:
      Namespace Name Mixin selector
      official d Ldna;d()Ldna;
      intermediary method_1029 Lnet/minecraft/class_243;method_1029()Lnet/minecraft/class_243;
      named normalize Lnet/minecraft/util/math/Vec3d;normalize()Lnet/minecraft/util/math/Vec3d;
    • dotProduct

      public double dotProduct(Vec3d vec)
      Returns the dot product of this vector and the given vector.
      Mappings:
      Namespace Name Mixin selector
      official b Ldna;b(Ldna;)D
      intermediary method_1026 Lnet/minecraft/class_243;method_1026(Lnet/minecraft/class_243;)D
      named dotProduct Lnet/minecraft/util/math/Vec3d;dotProduct(Lnet/minecraft/util/math/Vec3d;)D
    • crossProduct

      public Vec3d crossProduct(Vec3d vec)
      Returns the cross product of this vector and the given vector.
      Mappings:
      Namespace Name Mixin selector
      official c Ldna;c(Ldna;)Ldna;
      intermediary method_1036 Lnet/minecraft/class_243;method_1036(Lnet/minecraft/class_243;)Lnet/minecraft/class_243;
      named crossProduct Lnet/minecraft/util/math/Vec3d;crossProduct(Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/Vec3d;
    • subtract

      public Vec3d subtract(Vec3d vec)
      Subtracts the given vector from this vector.
      Returns:
      the difference between this vector and the given vector
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official d Ldna;d(Ldna;)Ldna;
      intermediary method_1020 Lnet/minecraft/class_243;method_1020(Lnet/minecraft/class_243;)Lnet/minecraft/class_243;
      named subtract Lnet/minecraft/util/math/Vec3d;subtract(Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/Vec3d;
    • subtract

      public Vec3d subtract(double x, double y, double z)
      Subtracts the given vector from this vector.
      Returns:
      the difference between this vector and the given vector
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(DDD)Ldna;
      intermediary method_1023 Lnet/minecraft/class_243;method_1023(DDD)Lnet/minecraft/class_243;
      named subtract Lnet/minecraft/util/math/Vec3d;subtract(DDD)Lnet/minecraft/util/math/Vec3d;
    • add

      public Vec3d add(Vec3d vec)
      Returns the sum of this vector and the given vector.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official e Ldna;e(Ldna;)Ldna;
      intermediary method_1019 Lnet/minecraft/class_243;method_1019(Lnet/minecraft/class_243;)Lnet/minecraft/class_243;
      named add Lnet/minecraft/util/math/Vec3d;add(Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/Vec3d;
    • add

      public Vec3d add(double x, double y, double z)
      Returns the sum of this vector and the given vector.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official b Ldna;b(DDD)Ldna;
      intermediary method_1031 Lnet/minecraft/class_243;method_1031(DDD)Lnet/minecraft/class_243;
      named add Lnet/minecraft/util/math/Vec3d;add(DDD)Lnet/minecraft/util/math/Vec3d;
    • isInRange

      public boolean isInRange(Position pos, double radius)
      Checks if the distance between this vector and the given position is less than radius.
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Lgt;D)Z
      intermediary method_24802 Lnet/minecraft/class_243;method_24802(Lnet/minecraft/class_2374;D)Z
      named isInRange Lnet/minecraft/util/math/Vec3d;isInRange(Lnet/minecraft/util/math/Position;D)Z
    • distanceTo

      public double distanceTo(Vec3d vec)
      Returns the distance between this vector and the given vector.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official f Ldna;f(Ldna;)D
      intermediary method_1022 Lnet/minecraft/class_243;method_1022(Lnet/minecraft/class_243;)D
      named distanceTo Lnet/minecraft/util/math/Vec3d;distanceTo(Lnet/minecraft/util/math/Vec3d;)D
    • squaredDistanceTo

      public double squaredDistanceTo(Vec3d vec)
      Returns the squared distance between this vector and the given vector.

      Can be used for fast comparison between distances.

      See Also:
      Mappings:
      Namespace Name Mixin selector
      official g Ldna;g(Ldna;)D
      intermediary method_1025 Lnet/minecraft/class_243;method_1025(Lnet/minecraft/class_243;)D
      named squaredDistanceTo Lnet/minecraft/util/math/Vec3d;squaredDistanceTo(Lnet/minecraft/util/math/Vec3d;)D
    • squaredDistanceTo

      public double squaredDistanceTo(double x, double y, double z)
      Returns the squared distance between this vector and the given vector.

      Can be used for fast comparison between distances.

      See Also:
      Mappings:
      Namespace Name Mixin selector
      official c Ldna;c(DDD)D
      intermediary method_1028 Lnet/minecraft/class_243;method_1028(DDD)D
      named squaredDistanceTo Lnet/minecraft/util/math/Vec3d;squaredDistanceTo(DDD)D
    • multiply

      public Vec3d multiply(double value)
      Return a vector whose coordinates are the coordinates of this vector each multiplied by the given scalar value.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(D)Ldna;
      intermediary method_1021 Lnet/minecraft/class_243;method_1021(D)Lnet/minecraft/class_243;
      named multiply Lnet/minecraft/util/math/Vec3d;multiply(D)Lnet/minecraft/util/math/Vec3d;
    • negate

      public Vec3d negate()
      Creates a vector with the same length but with the opposite direction.
      Mappings:
      Namespace Name Mixin selector
      official e Ldna;e()Ldna;
      intermediary method_22882 Lnet/minecraft/class_243;method_22882()Lnet/minecraft/class_243;
      named negate Lnet/minecraft/util/math/Vec3d;negate()Lnet/minecraft/util/math/Vec3d;
    • multiply

      public Vec3d multiply(Vec3d vec)
      Returns a vector whose coordinates are the product of each pair of coordinates in this vector and the given vector.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official h Ldna;h(Ldna;)Ldna;
      intermediary method_18806 Lnet/minecraft/class_243;method_18806(Lnet/minecraft/class_243;)Lnet/minecraft/class_243;
      named multiply Lnet/minecraft/util/math/Vec3d;multiply(Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/Vec3d;
    • multiply

      public Vec3d multiply(double x, double y, double z)
      Returns a vector whose coordinates are the product of each pair of coordinates in this vector and the given vector.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official d Ldna;d(DDD)Ldna;
      intermediary method_18805 Lnet/minecraft/class_243;method_18805(DDD)Lnet/minecraft/class_243;
      named multiply Lnet/minecraft/util/math/Vec3d;multiply(DDD)Lnet/minecraft/util/math/Vec3d;
    • length

      public double length()
      Returns the length of this vector.

      The length of a vector is equivalent to the distance between that vector and the ZERO vector.

      Returns:
      the length of this vector
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official f Ldna;f()D
      intermediary method_1033 Lnet/minecraft/class_243;method_1033()D
      named length Lnet/minecraft/util/math/Vec3d;length()D
    • lengthSquared

      public double lengthSquared()
      Returns the squared length of this vector.

      Can be used for fast comparison between lengths.

      Returns:
      the squared length of this vector
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official g Ldna;g()D
      intermediary method_1027 Lnet/minecraft/class_243;method_1027()D
      named lengthSquared Lnet/minecraft/util/math/Vec3d;lengthSquared()D
    • horizontalLength

      public double horizontalLength()
      Returns the horizontal length of this vector.

      This length is same as the length of a 2-vector with the x and z components of this vector, or the euclidean distance between (x, z) and the origin.

      Returns:
      the horizontal length of this vector
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official h Ldna;h()D
      intermediary method_37267 Lnet/minecraft/class_243;method_37267()D
      named horizontalLength Lnet/minecraft/util/math/Vec3d;horizontalLength()D
    • horizontalLengthSquared

      public double horizontalLengthSquared()
      Returns the squared horizontal length of this vector.

      Can be used for fast comparison between horizontal lengths.

      Returns:
      the squared horizontal length of this vector
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official i Ldna;i()D
      intermediary method_37268 Lnet/minecraft/class_243;method_37268()D
      named horizontalLengthSquared Lnet/minecraft/util/math/Vec3d;horizontalLengthSquared()D
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
      Mappings:
      Namespace Name Mixin selector
      official equals Ldna;equals(Ljava/lang/Object;)Z
      intermediary equals Lnet/minecraft/class_243;equals(Ljava/lang/Object;)Z
      named equals Lnet/minecraft/util/math/Vec3d;equals(Ljava/lang/Object;)Z
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • lerp

      public Vec3d lerp(Vec3d to, double delta)
      Performs linear interpolation from this vector to the given vector.
      Parameters:
      to - the vector to interpolate to
      delta - the interpolation coefficient in the range between 0 and 1
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Ldna;D)Ldna;
      intermediary method_35590 Lnet/minecraft/class_243;method_35590(Lnet/minecraft/class_243;D)Lnet/minecraft/class_243;
      named lerp Lnet/minecraft/util/math/Vec3d;lerp(Lnet/minecraft/util/math/Vec3d;D)Lnet/minecraft/util/math/Vec3d;
    • rotateX

      public Vec3d rotateX(float angle)
      Rotates this vector by the given angle counterclockwise around the X axis.
      Parameters:
      angle - the angle in radians
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(F)Ldna;
      intermediary method_1037 Lnet/minecraft/class_243;method_1037(F)Lnet/minecraft/class_243;
      named rotateX Lnet/minecraft/util/math/Vec3d;rotateX(F)Lnet/minecraft/util/math/Vec3d;
    • rotateY

      public Vec3d rotateY(float angle)
      Rotates this vector by the given angle counterclockwise around the Y axis.
      Parameters:
      angle - the angle in radians
      Mappings:
      Namespace Name Mixin selector
      official b Ldna;b(F)Ldna;
      intermediary method_1024 Lnet/minecraft/class_243;method_1024(F)Lnet/minecraft/class_243;
      named rotateY Lnet/minecraft/util/math/Vec3d;rotateY(F)Lnet/minecraft/util/math/Vec3d;
    • rotateZ

      public Vec3d rotateZ(float angle)
      Rotates this vector by the given angle counterclockwise around the Z axis.
      Parameters:
      angle - the angle in radians
      Mappings:
      Namespace Name Mixin selector
      official c Ldna;c(F)Ldna;
      intermediary method_31033 Lnet/minecraft/class_243;method_31033(F)Lnet/minecraft/class_243;
      named rotateZ Lnet/minecraft/util/math/Vec3d;rotateZ(F)Lnet/minecraft/util/math/Vec3d;
    • fromPolar

      public static Vec3d fromPolar(Vec2f polar)
      Converts pitch and yaw into a direction vector.
      Parameters:
      polar - the vector composed of pitch and yaw
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Ldmz;)Ldna;
      intermediary method_1034 Lnet/minecraft/class_243;method_1034(Lnet/minecraft/class_241;)Lnet/minecraft/class_243;
      named fromPolar Lnet/minecraft/util/math/Vec3d;fromPolar(Lnet/minecraft/util/math/Vec2f;)Lnet/minecraft/util/math/Vec3d;
    • fromPolar

      public static Vec3d fromPolar(float pitch, float yaw)
      Converts pitch and yaw into a direction vector.
      See Also:
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(FF)Ldna;
      intermediary method_1030 Lnet/minecraft/class_243;method_1030(FF)Lnet/minecraft/class_243;
      named fromPolar Lnet/minecraft/util/math/Vec3d;fromPolar(FF)Lnet/minecraft/util/math/Vec3d;
    • floorAlongAxes

      public Vec3d floorAlongAxes(EnumSet<Direction.Axis> axes)
      Applies the floor function to the coordinates chosen by the given axes.
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Ljava/util/EnumSet;)Ldna;
      intermediary method_1032 Lnet/minecraft/class_243;method_1032(Ljava/util/EnumSet;)Lnet/minecraft/class_243;
      named floorAlongAxes Lnet/minecraft/util/math/Vec3d;floorAlongAxes(Ljava/util/EnumSet;)Lnet/minecraft/util/math/Vec3d;
    • getComponentAlongAxis

      public double getComponentAlongAxis(Direction.Axis axis)
      Returns the coordinate chosen by the given axis.
      Mappings:
      Namespace Name Mixin selector
      official a Ldna;a(Lgl$a;)D
      intermediary method_18043 Lnet/minecraft/class_243;method_18043(Lnet/minecraft/class_2350$class_2351;)D
      named getComponentAlongAxis Lnet/minecraft/util/math/Vec3d;getComponentAlongAxis(Lnet/minecraft/util/math/Direction$Axis;)D
    • getX

      public final double getX()
      Returns the X coordinate.
      Specified by:
      getX in interface Position
      Mappings:
      Namespace Name Mixin selector
      official a Lgt;a()D
      intermediary method_10216 Lnet/minecraft/class_2374;method_10216()D
      named getX Lnet/minecraft/util/math/Position;getX()D
    • getY

      public final double getY()
      Returns the Y coordinate.
      Specified by:
      getY in interface Position
      Mappings:
      Namespace Name Mixin selector
      official b Lgt;b()D
      intermediary method_10214 Lnet/minecraft/class_2374;method_10214()D
      named getY Lnet/minecraft/util/math/Position;getY()D
    • getZ

      public final double getZ()
      Returns the Z coordinate.
      Specified by:
      getZ in interface Position
      Mappings:
      Namespace Name Mixin selector
      official c Lgt;c()D
      intermediary method_10215 Lnet/minecraft/class_2374;method_10215()D
      named getZ Lnet/minecraft/util/math/Position;getZ()D