java.lang.Object
org.hipparchus.geometry.euclidean.twod.Line
所有已实现的接口:
Embedding<Euclidean2D,Euclidean1D>, Hyperplane<Euclidean2D>

public class Line extends Object implements Hyperplane<Euclidean2D>, Embedding<Euclidean2D,Euclidean1D>
该类表示二维平面中的有向直线。

有向直线可以通过延长两点之间的线段过这些点来定义,也可以通过一个点和一个角度(按三角法方向)来定义。

由于它是有向的,其两侧的两个半平面可以明确定义为左半平面和右半平面。当使用直线的一部分来定义多边形边界的一部分时,可以通过仅使用局部属性来简单地识别内部和外部。

直线还可以用来完全定义平面中的参考框架。只需选择直线上的一个特定点(原始参考框架在直线上的正交投影)并使用沿着直线方向的单位向量和从左半平面到右半平面定向的正交向量。我们通过这个过程定义了两个坐标,沿着直线的横坐标和横跨直线的偏移量。平面上的所有点都可以通过这两个坐标唯一标识。直线是偏移量为零的点集,左半平面是偏移量为负的点集,右半平面是偏移量为正的点集。

  • 构造器详细资料

    • Line

      public Line(Vector2D p1, Vector2D p2, double tolerance)
      从两点构建直线。

      该直线从p1到p2定向

      参数:
      p1 - 第一个点
      p2 - 第二个点
      tolerance - 被视为相同的点的容差下限
    • Line

      public Line(Vector2D p, double angle, double tolerance)
      从点和角度构建直线。
      参数:
      p - 属于直线的点
      angle - 相对于横坐标轴的直线角度
      tolerance - 被视为相同的点的容差下限
    • Line

      public Line(Line line)
      复制构造函数。

      创建的实例与原始实例完全独立,是深度复制。

      参数:
      line - 要复制的直线
  • 方法详细资料

    • copySelf

      public Line copySelf()
      复制实例。

      创建的实例与原始实例完全独立。使用深度复制,没有共享任何底层对象(除了不可变对象)。

      指定者:
      copySelf 在接口中 Hyperplane<Euclidean2D>
      返回:
      一个新的超平面,是实例的副本
    • reset

      public void reset(Vector2D p1, Vector2D p2)
      将实例重置为从两点构建。

      该直线从p1到p2定向

      参数:
      p1 - 第一个点
      p2 - 第二个点
    • reset

      public void reset(Vector2D p, double alpha)
      将实例重置为从点和角度构建。
      参数:
      p - 属于直线的点
      alpha - 相对于横坐标轴的直线角度
    • revertSelf

      public void revertSelf()
      恢复实例。
    • getReverse

      public Line getReverse()
      获取实例的反向。

      获取方向与实例方向相反的直线。

      只要实例或其反向都没有被修改(即在调用任何reset(Vector2D, Vector2D)reset(Vector2D, double)revertSelf()setAngle(double)setOriginOffset(double)方法之前),那么直线及其反向保持链接在一起,使得line.getReverse().getReverse() == line。当其中一条直线被修改时,链接将被删除,因为两个实例变得独立。

      返回:
      一个新的直线,方向与实例方向相反
    • toSubSpace

      public Vector1D toSubSpace(Vector<Euclidean2D,Vector2D> vector)
      将空间点转换为子空间点。
      参数:
      vector - 空间中的n维点
      返回:
      对应于指定空间点的(n-1)维子空间点
    • toSpace

      public Vector2D toSpace(Vector<Euclidean1D,Vector1D> vector)
      将子空间点转换为空间点。
      参数:
      vector - 子空间中的(n-1)维点
      返回:
      对应于指定子空间点的n维空间点
    • toSubSpace

      public Vector1D toSubSpace(Point<Euclidean2D> point)
      将空间点转换为子空间点。
      指定者:
      toSubSpace 在接口中 Embedding<Euclidean2D,Euclidean1D>
      参数:
      point - 空间中的n维点
      返回:
      对应于指定空间点的(n-1)维子空间点
      另请参阅:
    • toSpace

      public Vector2D toSpace(Point<Euclidean1D> point)
      将子空间点转换为空间点。
      指定者:
      toSpace 在接口中 Embedding<Euclidean2D,Euclidean1D>
      参数:
      point - 子空间的(n-1)维点
      返回:
      对应于指定子空间点的n维空间点
      另请参阅:
    • intersection

      public Vector2D intersection(Line other)
      获取实例和另一条线的交点。
      参数:
      other - 另一条线
      返回:
      实例和另一条线的交点,如果没有交点则返回null
    • project

      public Point<Euclidean2D> project(Point<Euclidean2D> point)
      将点投影到超平面上。
      指定者:
      project 在接口中 Hyperplane<Euclidean2D>
      参数:
      point - 要投影的点
      返回:
      投影后的点
    • getTolerance

      public double getTolerance()
      获取被视为属于超平面的点的容差下限。
      指定者:
      getTolerance 在接口中 Hyperplane<Euclidean2D>
      返回:
      被视为属于超平面的点的容差下限
    • wholeHyperplane

      public SubLine wholeHyperplane()
      构建覆盖整个超平面的子超平面。
      指定者:
      wholeHyperplane 在接口中 Hyperplane<Euclidean2D>
      返回:
      覆盖整个超平面的子超平面
    • emptyHyperplane

      public SubLine emptyHyperplane()
      构建一个不覆盖任何内容的子超平面。
      指定者:
      emptyHyperplane 在接口中 Hyperplane<Euclidean2D>
      返回:
      不覆盖任何内容的子超平面
    • wholeSpace

      public PolygonsSet wholeSpace()
      构建覆盖整个空间的区域。
      指定者:
      wholeSpace 在接口中 Hyperplane<Euclidean2D>
      返回:
      包含实例的区域(实际上是一个PolygonsSet实例)
    • getOffset

      public double getOffset(Line line)
      获取平行线的偏移(有向距离)。

      仅应在平行线上调用此方法,否则结果没有意义。

      如果两条线相同,则偏移为0,如果线在实例的右侧,则为正,如果在左侧,则为负,根据其自然方向。

      参数:
      line - 要检查的线
      返回:
      线的偏移
    • getOffset

      public double getOffset(Vector<Euclidean2D,Vector2D> vector)
      获取向量的偏移(有向距离)。
      参数:
      vector - 要检查的向量
      返回:
      向量的偏移
    • getOffset

      public double getOffset(Point<Euclidean2D> point)
      获取点的偏移(有向距离)。

      如果点在基础超平面上,则偏移为0,如果点在超平面的一侧,则为正,如果点在另一侧,则为负,根据超平面的自然方向。

      指定者:
      getOffset 在接口中 Hyperplane<Euclidean2D>
      参数:
      point - 要检查的点
      返回:
      点的偏移
    • sameOrientationAs

      public boolean sameOrientationAs(Hyperplane<Euclidean2D> other)
      检查实例是否与另一个超平面具有相同的方向。

      预计在平行超平面上调用此方法。该方法不应重新检查平行性,只应检查方向,通常通过测试法线的点积的符号等方式。

      指定者:
      sameOrientationAs 在接口中 Hyperplane<Euclidean2D>
      参数:
      other - 要与实例比较的另一个超平面
      返回:
      如果实例和另一个超平面具有相同的方向,则为true
    • getPointAt

      public Vector2D getPointAt(Vector1D abscissa, double offset)
      从平面获取一个点。
      参数:
      abscissa - 点的期望横坐标
      offset - 点的期望偏移量
      返回:
      平面中的一个点,具有给定的横坐标和相对于线的偏移量
    • contains

      public boolean contains(Vector2D p)
      检查线是否包含一个点。
      参数:
      p - 要检查的点
      返回:
      如果p属于线,则为true
    • distance

      public double distance(Vector2D p)
      计算实例和一个点之间的距离。

      这是调用FastMath.abs(getOffset(p))的快捷方式,并提供与org.hipparchus.geometry.euclidean.threed.Line类中的内容一致性。

      参数:
      p - 要检查的点
      返回:
      实例和点之间的距离
    • isParallelTo

      public boolean isParallelTo(Line line)
      检查实例是否与另一条线平行。
      参数:
      line - 要检查的另一条线
      返回:
      如果实例与另一条线平行(它们可以具有相同或相反的方向),则为true
    • translateToPoint

      public void translateToPoint(Vector2D p)
      将线段平移以使其通过一个点。
      参数:
      p - 线应通过的点
    • getAngle

      public double getAngle()
      获取线的角度。
      返回:
      相对于横坐标轴的线的角度
    • setAngle

      public void setAngle(double angle)
      设置线的角度。
      参数:
      angle - 相对于横坐标轴的线的新角度
    • getOriginOffset

      public double getOriginOffset()
      获取原点的偏移量。
      返回:
      原点的偏移量
    • setOriginOffset

      public void setOriginOffset(double offset)
      设置原点的偏移量。
      参数:
      offset - 原点的偏移量
    • getTransform

      public static Transform<Euclidean2D,Euclidean1D> getTransform(double cXX, double cYX, double cXY, double cYY, double cX1, double cY1) throws MathIllegalArgumentException
      获取嵌入仿射变换的Transform
      参数:
      cXX - 输入横坐标和输出横坐标之间的变换因子
      cYX - 输入横坐标和输出纵坐标之间的变换因子
      cXY - 输入纵坐标和输出横坐标之间的变换因子
      cYY - 输入纵坐标和输出纵坐标之间的变换因子
      cX1 - 输出横坐标的变换增量
      cY1 - 输出纵坐标的变换增量
      返回:
      可应用于Vector2DLineSubHyperplane实例的新变换
      抛出:
      MathIllegalArgumentException - 如果变换不可逆