类 PolyhedronsSet

java.lang.Object
org.hipparchus.geometry.partitioning.AbstractRegion<Euclidean3D,Euclidean2D>
org.hipparchus.geometry.euclidean.threed.PolyhedronsSet
所有已实现的接口:
Region<Euclidean3D>

public class PolyhedronsSet extends AbstractRegion<Euclidean3D,Euclidean2D>
该类表示一个三维区域:一组多面体。
  • 构造器详细资料

    • PolyhedronsSet

      public PolyhedronsSet(double tolerance)
      构建表示整个实数线的多面体集。
      参数:
      tolerance - 被视为相同的点之间的容差
    • PolyhedronsSet

      public PolyhedronsSet(BSPTree<Euclidean3D> tree, double tolerance)
      从BSP树构建多面体集。

      BSP树的叶节点必须具有表示相应单元格内部状态的Boolean属性(内部单元格为true,外部单元格为false)。为了避免构建太多小对象,建议使用预定义常量Boolean.TRUEBoolean.FALSE

      此构造函数面向专家使用,因为构建树可能是一项困难的任务。它不适用于一般用途,并且出于性能原因不会彻底检查其输入,因为这将要求每次都遍历整个树。未能提供具有正确属性的树,将会导致诸如NullPointerExceptionClassCastException等问题。这种限制是已知的,解释了为什么此构造函数仅供专家使用。调用者有责任提供正确的参数。

      参数:
      tree - 表示区域的内部/外部BSP树
      tolerance - 被视为相同的点之间的容差
    • PolyhedronsSet

      public PolyhedronsSet(Collection<SubHyperplane<Euclidean3D>> boundary, double tolerance)
      从由子超平面指定的边界表示(B-rep)构建多面体集。

      边界以sub-hyperplanes的集合形式提供。每个子超平面的内部部分在其负侧,外部部分在其正侧。

      边界元素可以以任何顺序出现,并且可以形成几个非连接的集合(例如具有孔的多面体或作为整体考虑的一组不相交的多面体)。实际上,元素甚至不需要连接在一起(它们的拓扑连接在这里不使用)。但是,如果边界实际上没有将内部开放区域与外部开放区域(此处的开放具有其拓扑含义)分开,则随后对checkPoint方法的调用将不再有意义。

      如果边界为空,则区域将表示整个空间。

      参数:
      boundary - 作为SubHyperplane对象集合的边界元素集合
      tolerance - 被视为相同的点之间的容差
    • PolyhedronsSet

      public PolyhedronsSet(List<Vector3D> vertices, List<int[]> facets, double tolerance)
      从由连接顶点指定的边界表示(B-rep)构建多面体集。

      边界以顶点列表和面列表的形式提供。每个面都被指定为包含顶点列表中的顶点索引数组。每个面的法线按照右手规则定向到面的顶点列表。

      执行一些基本的合理性检查,但并非所有内容都经过彻底评估,因此仍然由调用者负责确保顶点和面是一致的,并正确定义多面体集。

      参数:
      vertices - 多面体集顶点列表
      facets - 面列表,作为顶点列表中的顶点索引
      tolerance - 被视为相同的点之间的容差
      抛出:
      MathIllegalArgumentException - 如果一些基本合理性检查失败
    • PolyhedronsSet

      public PolyhedronsSet(PolyhedronsSet.BRep brep, double tolerance)
      从由连接顶点指定的边界表示(B-rep)构建多面体集。

      执行一些基本的合理性检查,但并非所有内容都经过彻底评估,因此仍然由调用者负责确保顶点和面是一致的,并正确定义多面体集。

      参数:
      brep - 要构建的多面体的边界表示
      tolerance - 被视为相同的点之间的容差
      抛出:
      MathIllegalArgumentException - 如果一些基本合理性检查失败
      从以下版本开始:
      1.2
    • PolyhedronsSet

      public PolyhedronsSet(double xMin, double xMax, double yMin, double yMax, double zMin, double zMax, double tolerance)
      构建平行六面体箱。
      参数:
      xMin - x方向上的最小边界
      xMax - x方向上的最大边界
      yMin - y方向上的最小边界
      yMax - y方向上的最大边界
      zMin - z方向上的最小边界
      zMax - z方向上的最大边界
      tolerance - 被视为相同的点之间的容差
  • 方法详细资料

    • buildNew

      public PolyhedronsSet buildNew(BSPTree<Euclidean3D> tree)
      使用实例作为原型构建区域。

      此方法允许创建新实例,而无需确切了解区域的类型。这是原型设计模式的应用。

      BSP树的叶节点必须具有表示相应单元格内部状态的Boolean属性(内部单元格为true,外部单元格为false)。为了避免构建太多小对象,建议使用预定义常量Boolean.TRUEBoolean.FALSE。树还必须具有空的内部节点或按照getTree方法中指定的边界表示的内部节点。

      指定者:
      buildNew 在接口中 Region<Euclidean3D>
      指定者:
      buildNew 在类中 AbstractRegion<Euclidean3D,Euclidean2D>
      参数:
      tree - 表示新区域的内部/外部BSP树
      返回:
      构建的区域
    • getBRep

      public PolyhedronsSet.BRep getBRep() throws MathRuntimeException
      获取实例的边界表示。

      边界表示只能从有界的多面体集中提取。如果多面体集是无界的,则会抛出 MathRuntimeException

      提取的边界表示不是最小的,例如,规范面可能会被分割为几个较小的独立子面,这些子面共享相同的平面,并通过它们的边缘连接。

      由于 B-Rep 表示不支持具有多个边界循环的面(例如具有孔洞的面),因此当尝试从这种复杂的多面体集中提取 B-Rep 时会触发异常。

      返回:
      实例的边界表示
      抛出:
      MathRuntimeException - 如果多面体是无界的
      从以下版本开始:
      1.2
    • computeGeometricalProperties

      protected void computeGeometricalProperties()
      计算一些几何属性。

      要计算的属性是重心和大小。

      指定者:
      computeGeometricalProperties 在类中 AbstractRegion<Euclidean3D,Euclidean2D>
    • firstIntersection

      public SubHyperplane<Euclidean3D> firstIntersection(Vector3D point, Line line)
      获取被半无限线穿过的第一个子超平面。
      参数:
      point - 考虑线段的起始点
      line - 要考虑的线段(包含点)
      返回:
      给定点之后被线段穿过的第一个子超平面,如果线段不与任何子超平面相交,则返回 null
    • rotate

      public PolyhedronsSet rotate(Vector3D center, Rotation rotation)
      将区域围绕指定点旋转。

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

      参数:
      center - 旋转中心
      rotation - 矢量旋转运算符
      返回:
      代表旋转后区域的新实例
    • translate

      public PolyhedronsSet translate(Vector3D translation)
      将区域平移指定量。

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

      参数:
      translation - 要应用的平移
      返回:
      代表平移后区域的新实例