java.lang.Object
org.hipparchus.geometry.euclidean.threed.Plane
所有已实现的接口:
Embedding<Euclidean3D,Euclidean2D>, Hyperplane<Euclidean3D>

public class Plane extends Object implements Hyperplane<Euclidean3D>, Embedding<Euclidean3D,Euclidean2D>
该类表示三维空间中的平面。
  • 构造器详细资料

    • Plane

      public Plane(Vector3D normal, double tolerance) throws MathRuntimeException
      构建一个垂直于给定方向且包含原点的平面。
      参数:
      normal - 平面的法线方向
      tolerance - 被视为相同的点的容差
      抛出:
      MathRuntimeException - 如果法线的范数太小
    • Plane

      public Plane(Vector3D p, Vector3D normal, double tolerance) throws MathRuntimeException
      从一个点和一个法线构建平面。
      参数:
      p - 属于平面的点
      normal - 平面的法线方向
      tolerance - 被视为相同的点的容差
      抛出:
      MathRuntimeException - 如果法线的范数太小
    • Plane

      public Plane(Vector3D p1, Vector3D p2, Vector3D p3, double tolerance) throws MathRuntimeException
      从三个点构建平面。

      平面沿着(p2-p1) ^ (p3-p1)方向定向。

      参数:
      p1 - 属于平面的第一个点
      p2 - 属于平面的第二个点
      p3 - 属于平面的第三个点
      tolerance - 被视为相同的点的容差
      抛出:
      MathRuntimeException - 如果点不构成平面
    • Plane

      public Plane(Plane plane)
      复制构造函数。

      创建的实例与原始实例完全独立。使用深度复制,底层对象均不共享。

      参数:
      plane - 要复制的平面
  • 方法详细资料

    • copySelf

      public Plane copySelf()
      复制实例。

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

      指定者:
      copySelf 在接口中 Hyperplane<Euclidean3D>
      返回:
      一个新的超平面,与实例相同
    • reset

      public void reset(Vector3D p, Vector3D normal) throws MathRuntimeException
      重置实例,就像是从一个点和一个法线构建的一样。
      参数:
      p - 属于平面的点
      normal - 平面的法线方向
      抛出:
      MathRuntimeException - 如果法线的范数太小
    • reset

      public void reset(Plane original)
      从另一个实例重置实例。

      更新后的实例与原始实例完全独立。使用深度重置,底层对象均不共享。

      参数:
      original - 要从中重置的平面
    • getOrigin

      public Vector3D getOrigin()
      获取平面框架的原点。

      返回的点是平面中3D空间原点的正交投影。

      返回:
      平面框架的原点(距离3D空间原点最近的点)
    • getNormal

      public Vector3D getNormal()
      获取归一化的法线向量。

      由(getU, getV, getNormal)定义的框架是右手正交化框架。

      返回:
      归一化的法线向量
      另请参阅:
    • getU

      public Vector3D getU()
      获取平面的第一个规范向量。

      由(getU, getV, getNormal)定义的框架是右手正交化框架。

      返回:
      归一化的第一个规范向量
      另请参阅:
    • getV

      public Vector3D getV()
      获取平面的第二个规范向量。

      由(getU, getV, getNormal)定义的框架是右手正交化框架。

      返回:
      归一化的第二个规范向量
      另请参阅:
    • project

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

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

      public void revertSelf()
      反转平面。

      用方向相反的类似平面替换实例。

      新平面框架的选择方式是,一个在平面坐标中具有(x, y)和相对于平面的z偏移的3D点,不受更改的影响,将具有(y, x)和相对于新平面的-z偏移。这意味着由getU()getV()方法返回的 向量被交换,由 getNormal()方法返回的 向量被反转。

    • toSubSpace

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

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

      public Vector2D toSubSpace(Point<Euclidean3D> point)
      将3D空间点转换为平面点。
      指定者:
      toSubSpace 在接口中 Embedding<Euclidean3D,Euclidean2D>
      参数:
      point - 空间点(必须是Vector3D实例)
      返回:
      平面点(实际上是Vector2D实例)
      另请参阅:
    • toSpace

      public Vector3D toSpace(Point<Euclidean2D> point)
      将平面点转换为3D空间点。
      指定者:
      toSpace 在接口中 Embedding<Euclidean3D,Euclidean2D>
      参数:
      point - 平面点(必须是Vector2D实例)
      返回:
      3D空间点(实际上是Vector3D实例)
      另请参阅:
    • getPointAt

      public Vector3D getPointAt(Vector2D inPlane, double offset)
      从3D空间中获取一个点。
      参数:
      inPlane - 平面中点的期望坐标
      offset - 点的期望偏移量
      返回:
      3D空间中的一个点,具有给定坐标和相对于平面的偏移量
    • isSimilarTo

      public boolean isSimilarTo(Plane plane)
      检查实例是否类似于另一个平面。

      如果它们包含相同的点,则认为平面是相似的。这并不意味着它们相等,因为它们可以具有相反的法线。

      参数:
      plane - 与实例进行比较的平面
      返回:
      如果平面相似则为true
    • rotate

      public Plane rotate(Vector3D center, Rotation rotation)
      围绕指定点旋转平面。

      实例不会被修改,而是创建一个新实例。

      参数:
      center - 旋转中心
      rotation - 矢量旋转运算符
      返回:
      一个新平面
    • translate

      public Plane translate(Vector3D translation)
      通过指定的量平移平面。

      实例不会被修改,而是创建一个新实例。

      参数:
      translation - 要应用的平移
      返回:
      一个新平面
    • intersection

      public Vector3D intersection(Line line)
      获取与实例的线相交。
      参数:
      line - 与实例相交的线
      返回:
      线与实例之间的交点(如果线与实例平行则为null)
    • intersection

      public Line intersection(Plane other)
      构建实例和另一个平面共享的线。
      参数:
      other - 另一个平面
      返回:
      实例和另一个平面的交点线(实际上是一个Line实例)
    • intersection

      public static Vector3D intersection(Plane plane1, Plane plane2, Plane plane3)
      获取三个平面的交点。
      参数:
      plane1 - 第一个平面
      plane2 - 第二个平面
      plane3 - 第三个平面
      返回:
      三个平面的交点,如果某些平面平行则为null
    • wholeHyperplane

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

      public SubPlane emptyHyperplane()
      构建覆盖空集的子超平面。
      指定者:
      emptyHyperplane 在接口中 Hyperplane<Euclidean3D>
      返回:
      覆盖空集的子超平面
    • wholeSpace

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

      public boolean contains(Vector3D p)
      检查实例是否包含一个点。
      参数:
      p - 要检查的点
      返回:
      如果p属于平面则为true
    • getOffset

      public double getOffset(Plane plane)
      获取平行平面的偏移(有向距离)。

      仅当平行平面调用此方法,否则结果没有意义。

      如果两个平面相同,则偏移为0,如果平面在实例的正侧则为正,如果在负侧则为负,根据其自然方向。

      参数:
      plane - 要检查的平面
      返回:
      平面的偏移
    • getOffset

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

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

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

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

      public boolean sameOrientationAs(Hyperplane<Euclidean3D> other)
      检查实例是否与另一个超平面具有相同的方向。
      指定者:
      sameOrientationAs 在接口中 Hyperplane<Euclidean3D>
      参数:
      other - 要与实例比较方向的另一个超平面
      返回:
      如果实例和另一个超平面具有相同的方向则为true