程序包 org.bukkit.util

类 Vector

java.lang.Object
org.bukkit.util.Vector
所有已实现的接口:
Cloneable, ConfigurationSerializable
直接已知子类:
BlockVector

public class Vector extends Object implements Cloneable, ConfigurationSerializable
Vector代表一个可变向量. 这个组件是可变的,长期存储这些向量可能导致问题,因为之后的代码可能对其进行修改. 如果你想要长期存储一个向量,最好使用 clone() 获得一个拷贝.

原文:Represents a mutable vector. Because the components of Vectors are mutable, storing Vectors long term may be dangerous if passing code modifies the Vector later. If you want to keep around a Vector, it may be wise to call clone() in order to get a copy.

  • 字段概要

    字段
    修饰符和类型
    字段
    说明
    protected double
     
    protected double
     
    protected double
     
  • 构造器概要

    构造器
    构造器
    说明
    用坐标原点来构造一个向量.
    Vector(double x, double y, double z)
    用给定双精度浮点数坐标来构造一个向量.
    Vector(float x, float y, float z)
    用给定单精度浮点数坐标来构造一个向量.
    Vector(int x, int y, int z)
    用给定整数坐标来构造一个向量.
  • 方法概要

    修饰符和类型
    方法
    说明
    add(Vector vec)
    将本向量的坐标加上另一个向量的坐标.
    float
    angle(Vector other)
    获取本向量与另一个向量的夹角,用弧度表示.
    void
    检查向量的坐标数值是否均合法.
    克隆此向量.
    copy(Vector vec)
    将本向量的坐标全部设为另一个向量的坐标.
    将本向量的坐标设为两个向量的叉积.
    static Vector
     
    double
    获取本向量与与另一个向量之间的距离.
    double
    获取本向量与与另一个向量之间的距离的平方.
    将本向量的坐标除以另一个向量的坐标.
    double
    dot(Vector other)
    计算本向量与另一个向量的点积,定义为x1*x2+y1*y2+z1*z2.
    boolean
    检查两个对象是否相同.
    int
    获取向下取整的X坐标,这等同于获取包含这个向量的方块的X坐标.
    int
    获取向下取整的Y坐标,这等同于获取包含这个向量的方块的Y坐标.
    int
    获取向下取整的Z坐标,这等同于获取包含这个向量的方块的Z坐标.
    返回一个新的向量,其坐标为本向量与另一个向量的叉积.
    static double
    获取近似相等的阈值,用于equals().
    static Vector
    获取两个向量坐标中更大的那些坐标组成的新向量.
    获取一个新的向量,它的值为本向量和另一个向量间的连线的中点.
    static Vector
    获取两个向量坐标中更小的那些坐标组成的新向量.
    static Vector
    获取一个随机向量,其坐标值均为0到1之间(不含1).
    double
    获取X坐标.
    double
    获取Y坐标.
    double
    获取Z坐标.
    int
    返回这个向量的哈希码.
    boolean
    isInAABB(Vector min, Vector max)
    判断本向量是否在一个AABB包围盒中.
    boolean
    isInSphere(Vector origin, double radius)
    判断本向量是否在一个球形空间中.
    double
    获取向量的模值,定义为 sqrt(x^2+y^2+z^2).
    double
    获取向量的模的平方.
    设置本向量的坐标为两个向量连线的中点.
    multiply(double m)
    向量的数乘,将向量在所有轴上扩展某个倍数.
    multiply(float m)
    向量的数乘,将向量在所有轴上扩展某个倍数.
    multiply(int m)
    向量的数乘,将向量在所有轴上扩展某个倍数.
    将本向量的坐标乘上另一个向量的坐标.
    将本向量转化为单位向量(模为1的向量).
    Creates a Map representation of this class.
    setX(double x)
    设置X坐标.
    setX(float x)
    设置X坐标.
    setX(int x)
    设置X坐标.
    setY(double y)
    设置Y坐标.
    setY(float y)
    设置Y坐标.
    setY(int y)
    设置Y坐标.
    setZ(double z)
    设置Z坐标.
    setZ(float z)
    设置Z坐标.
    setZ(int z)
    设置Z坐标.
    从本向量的坐标中减去另一个向量的坐标.
    获取这个向量所在的方块的向量.
    将向量转换为 Location, 其自转角(也叫偏航角,Yaw)、旋进角(也叫进动角、俯仰角,Pitch)为0.
    toLocation(World world, float yaw, float pitch)
    将向量转换为 Location.
    返回这个向量的坐标表示 x,y,z.
    将本向量设为原点向量.

    从类继承的方法 java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • 字段详细资料

    • x

      protected double x
    • y

      protected double y
    • z

      protected double z
  • 构造器详细资料

    • Vector

      public Vector()
      用坐标原点来构造一个向量.

      原文:Construct the vector with all components as 0.

    • Vector

      public Vector(int x, int y, int z)
      用给定整数坐标来构造一个向量.

      原文:Construct the vector with provided integer components.

      参数:
      x - X坐标
      y - Y坐标
      z - Z坐标
    • Vector

      public Vector(double x, double y, double z)
      用给定双精度浮点数坐标来构造一个向量.

      原文:Construct the vector with provided double components.

      参数:
      x - X坐标
      y - Y坐标
      z - Z坐标
    • Vector

      public Vector(float x, float y, float z)
      用给定单精度浮点数坐标来构造一个向量.

      原文:Construct the vector with provided float components.

      参数:
      x - X坐标
      y - Y坐标
      z - Z坐标
  • 方法详细资料

    • add

      public Vector add(Vector vec)
      将本向量的坐标加上另一个向量的坐标.

      原文:Adds a vector to this one

      参数:
      vec - 另一个向量
      返回:
      返回自身作为结果向量
    • subtract

      public Vector subtract(Vector vec)
      从本向量的坐标中减去另一个向量的坐标.

      原文:Subtracts a vector from this one.

      参数:
      vec - 另一个向量
      返回:
      返回自身作为结果向量
    • multiply

      public Vector multiply(Vector vec)
      将本向量的坐标乘上另一个向量的坐标.

      译注:这不是叉积也不是点积,只是单纯的乘法.

      原文:Multiplies the vector by another.

      参数:
      vec - 另一个向量
      返回:
      返回自身作为结果向量
    • divide

      public Vector divide(Vector vec)
      将本向量的坐标除以另一个向量的坐标.

      原文:Divides the vector by another.

      参数:
      vec - 另一个向量
      返回:
      返回自身作为结果向量
    • copy

      public Vector copy(Vector vec)
      将本向量的坐标全部设为另一个向量的坐标.

      原文:Copies another vector

      参数:
      vec - 另一个向量
      返回:
      返回自身作为结果向量
    • length

      public double length()
      获取向量的模值,定义为 sqrt(x^2+y^2+z^2). 这个方法的返回值没有被缓存,且使用了开销较大的平方以及开根函数, 所以不要反复调用这个方法来获取向量的模值. 当向量的模过大时,开根函数有可能发生溢出,并会返回Double.NaN.

      原文:Gets the magnitude of the vector, defined as sqrt(x^2+y^2+z^2). The value of this method is not cached and uses a costly square-root function, so do not repeatedly call this method to get the vector's magnitude. NaN will be returned if the inner result of the sqrt() function overflows, which will be caused if the length is too long.

      返回:
    • lengthSquared

      public double lengthSquared()
      获取向量的模的平方.

      原文:Gets the magnitude of the vector squared.

      返回:
      模的平方
    • distance

      public double distance(Vector o)
      获取本向量与与另一个向量之间的距离. 这个方法的返回值没有被缓存,且使用了开销较大的平方以及开根函数, 所以不要反复调用这个方法来获取向量的模值. 当向量的模过大时,开根函数有可能发生溢出,并会返回Double.NaN.

      原文:Get the distance between this vector and another. The value of this method is not cached and uses a costly square-root function, so do not repeatedly call this method to get the vector's magnitude. NaN will be returned if the inner result of the sqrt() function overflows, which will be caused if the distance is too long.

      参数:
      o - 给定向量
      返回:
      距离
    • distanceSquared

      public double distanceSquared(Vector o)
      获取本向量与与另一个向量之间的距离的平方.

      原文:Get the squared distance between this vector and another.

      参数:
      o - 给定向量
      返回:
      距离的平方
    • angle

      public float angle(Vector other)
      获取本向量与另一个向量的夹角,用弧度表示.

      原文:Gets the angle between this vector and another in radians.

      参数:
      other - 给定向量
      返回:
      弧度表示的夹角
    • midpoint

      public Vector midpoint(Vector other)
      设置本向量的坐标为两个向量连线的中点.

      原文:Sets this vector to the midpoint between this vector and another.

      参数:
      other - 给定向量
      返回:
      返回自身作为结果向量(此时已经是中点向量)
    • getMidpoint

      public Vector getMidpoint(Vector other)
      获取一个新的向量,它的值为本向量和另一个向量间的连线的中点.

      原文:Gets a new midpoint vector between this vector and another.

      参数:
      other - 给定向量
      返回:
      一个新的中点向量
    • multiply

      public Vector multiply(int m)
      向量的数乘,将向量在所有轴上扩展某个倍数.

      原文:Performs scalar multiplication, multiplying all components with a scalar.

      参数:
      m - 因数,即数乘的倍数,整数
      返回:
      返回自身作为结果向量
    • multiply

      public Vector multiply(double m)
      向量的数乘,将向量在所有轴上扩展某个倍数.

      原文:Performs scalar multiplication, multiplying all components with a scalar.

      参数:
      m - 因数,即数乘的倍数,双精度浮点数
      返回:
      返回自身作为结果向量
    • multiply

      public Vector multiply(float m)
      向量的数乘,将向量在所有轴上扩展某个倍数.

      原文:Performs scalar multiplication, multiplying all components with a scalar.

      参数:
      m - 因数,即数乘的倍数,单精度浮点数
      返回:
      返回自身作为结果向量
    • dot

      public double dot(Vector other)
      计算本向量与另一个向量的点积,定义为x1*x2+y1*y2+z1*z2. 此函数的返回值是个标量.

      原文:Calculates the dot product of this vector with another. The dot product is defined as x1*x2+y1*y2+z1*z2. The returned value is a scalar.

      参数:
      other - 给定向量
      返回:
      点积
    • crossProduct

      public Vector crossProduct(Vector o)
      将本向量的坐标设为两个向量的叉积.

      其计算过程如下:

      • x = y1 * z2 - y2 * z1
      • y = z1 * x2 - z2 * x1
      • z = x1 * y2 - x2 * y1

      译注:叉积是a向量和b向量的垂直向量的积的模,方向使用右手定则判断.

      原文:Calculates the cross product of this vector with another. The cross product is defined as...

      参数:
      o - 给定向量
      返回:
      返回自身作为结果向量
    • getCrossProduct

      public Vector getCrossProduct(Vector o)
      返回一个新的向量,其坐标为本向量与另一个向量的叉积. 其计算过程如下:
      • x = y1 * z2 - y2 * z1
      • y = z1 * x2 - z2 * x1
      • z = x1 * y2 - x2 * y1

      译注:叉积是a向量和b向量的垂直向量的积的模,方向使用右手定则判断.

      原文:Calculates the cross product of this vector with another without mutating the original. The cross product is defined as:

      • x = y1 * z2 - y2 * z1
      • y = z1 * x2 - z2 * x1
      • z = x1 * y2 - x2 * y1
      参数:
      o - 给定向量
      返回:
      新向量表示叉积的结果
    • normalize

      public Vector normalize()
      将本向量转化为单位向量(模为1的向量).

      原文:Converts this vector to a unit vector (a vector with length of 1).

      返回:
      返回自身作为结果向量
    • zero

      public Vector zero()
      将本向量设为原点向量.

      原文:Zero this vector's components.

      返回:
      返回自身作为结果向量
    • isInAABB

      public boolean isInAABB(Vector min, Vector max)
      判断本向量是否在一个AABB包围盒中.

      参数 min 和 max 必须真的是最小坐标和最大坐标,也就是说必须是能构成长方体的对角点.

      原文:Returns whether this vector is in an axis-aligned bounding box.

      The minimum and maximum vectors given must be truly the minimum and maximum X, Y and Z components.

      参数:
      min - 最小向量
      max - 最大向量
      返回:
      这个向量是否在这个AABB包围盒中
    • isInSphere

      public boolean isInSphere(Vector origin, double radius)
      判断本向量是否在一个球形空间中.

      原文:Returns whether this vector is within a sphere.

      参数:
      origin - 球心
      radius - 半径
      返回:
      此向量是否在球形空间中
    • getX

      public double getX()
      获取X坐标.

      原文:Gets the X component.

      返回:
      X坐标
    • getBlockX

      public int getBlockX()
      获取向下取整的X坐标,这等同于获取包含这个向量的方块的X坐标.

      原文:Gets the floored value of the X component, indicating the block that this vector is contained with.

      返回:
      方块的X坐标
    • getY

      public double getY()
      获取Y坐标.

      原文:Gets the Y component.

      返回:
      Y坐标
    • getBlockY

      public int getBlockY()
      获取向下取整的Y坐标,这等同于获取包含这个向量的方块的Y坐标.

      原文:Gets the floored value of the Y component, indicating the block that this vector is contained with.

      返回:
      方块的Y坐标
    • getZ

      public double getZ()
      获取Z坐标.

      原文:Gets the Z component.

      返回:
      Z坐标
    • getBlockZ

      public int getBlockZ()
      获取向下取整的Z坐标,这等同于获取包含这个向量的方块的Z坐标.

      原文:Gets the floored value of the Z component, indicating the block that this vector is contained with.

      返回:
      方块的Z坐标
    • setX

      public Vector setX(int x)
      设置X坐标.

      原文:Set the X component.

      参数:
      x - 新的X坐标
      返回:
      自身向量
    • setX

      public Vector setX(double x)
      设置X坐标.

      原文:Set the X component.

      参数:
      x - 新的X坐标
      返回:
      自身向量
    • setX

      public Vector setX(float x)
      设置X坐标.

      原文:Set the X component.

      参数:
      x - 新的X坐标
      返回:
      自身向量
    • setY

      public Vector setY(int y)
      设置Y坐标.

      原文:Set the Y component.

      参数:
      y - 新的Y坐标
      返回:
      自身向量
    • setY

      public Vector setY(double y)
      设置Y坐标.

      原文:Set the Y component.

      参数:
      y - 新的Y坐标
      返回:
      自身向量
    • setY

      public Vector setY(float y)
      设置Y坐标.

      原文:Set the Y component.

      参数:
      y - 新的Y坐标
      返回:
      自身向量
    • setZ

      public Vector setZ(int z)
      设置Z坐标.

      原文:Set the Z component.

      参数:
      z - 新的Z坐标
      返回:
      自身向量
    • setZ

      public Vector setZ(double z)
      设置Z坐标.

      原文:Set the Z component.

      参数:
      z - 新的Z坐标
      返回:
      自身向量
    • setZ

      public Vector setZ(float z)
      设置Z坐标.

      原文:Set the Z component.

      参数:
      z - 新的Z坐标
      返回:
      自身向量
    • equals

      public boolean equals(Object obj)
      检查两个对象是否相同.

      只要两个向量的所有坐标均相同则返回true.这个方法使用模糊匹配来回避浮点错误. 这个误差量(epsilon)可以通过自身恢复,即不会影响向量本身.

      原文:Checks to see if two objects are equal.

      Only two Vectors can ever return true. This method uses a fuzzy match to account for floating point errors. The epsilon can be retrieved with epsilon.

      覆盖:
      equals 在类中 Object
    • hashCode

      public int hashCode()
      返回这个向量的哈希码.

      原文:Returns a hash code for this vector

      覆盖:
      hashCode 在类中 Object
      返回:
      哈希码
    • clone

      public Vector clone()
      克隆此向量.

      原文:Get a new vector.

      覆盖:
      clone 在类中 Object
      返回:
      新向量
    • toString

      public String toString()
      返回这个向量的坐标表示 x,y,z.

      Returns this vector's components as x,y,z.

      覆盖:
      toString 在类中 Object
    • toLocation

      public Location toLocation(World world)
      将向量转换为 Location, 其自转角(也叫偏航角,Yaw)、旋进角(也叫进动角、俯仰角,Pitch)为0.

      原文:Gets a Location version of this vector with yaw and pitch being 0.

      参数:
      world - 连接这个Location的World.
      返回:
      这个Location实例
    • toLocation

      public Location toLocation(World world, float yaw, float pitch)
      将向量转换为 Location.

      原文:Gets a Location version of this vector.

      参数:
      world - 连接这个Location的World.
      yaw - 期望的自转角(也叫偏航角,Yaw).
      pitch - 期望的旋进角(也叫进动角、俯仰角,Pitch).
      返回:
      这个Location实例
    • toBlockVector

      public BlockVector toBlockVector()
      获取这个向量所在的方块的向量.

      原文:Get the block vector of this vector.

      返回:
      一个方块向量.
    • checkFinite

      public void checkFinite() throws IllegalArgumentException
      检查向量的坐标数值是否均合法.

      原文:Check if each component of this Vector is finite.

      抛出:
      IllegalArgumentException - 如果任何一维的坐标不合法则抛出
    • getEpsilon

      public static double getEpsilon()
      获取近似相等的阈值,用于equals().

      原文:Get the threshold used for equals().

      返回:
      误差量
    • getMinimum

      public static Vector getMinimum(Vector v1, Vector v2)
      获取两个向量坐标中更小的那些坐标组成的新向量.

      译注:即逐个比对两个向量的坐标,均取最小的那个组成一个新的向量.

      原文:Gets the minimum components of two vectors.

      参数:
      v1 - 第一个向量
      v2 - 第二个向量
      返回:
      最小向量
    • getMaximum

      public static Vector getMaximum(Vector v1, Vector v2)
      获取两个向量坐标中更大的那些坐标组成的新向量.

      译注:即逐个比对两个向量的坐标,均取更大的那个组成一个新的向量.

      原文:Gets the maximum components of two vectors.

      参数:
      v1 - 第一个向量
      v2 - 第二个向量
      返回:
      最大向量
    • getRandom

      public static Vector getRandom()
      获取一个随机向量,其坐标值均为0到1之间(不含1).
      返回:
      A random vector.
    • serialize

      public Map<String,Object> serialize()
      从接口复制的说明: ConfigurationSerializable
      Creates a Map representation of this class.

      This class must provide a method to restore this class, as defined in the ConfigurationSerializable interface javadocs.

      指定者:
      serialize 在接口中 ConfigurationSerializable
      返回:
      Map containing the current state of this class
    • deserialize

      public static Vector deserialize(Map<String,Object> args)