public class ArcsSet extends AbstractRegion<Sphere1D,Sphere1D> implements Iterable<double[]>
Note that due to the wrapping around \(2 \pi\), barycenter is
ill-defined here. It was defined only in order to fulfill
the requirements of the Region
interface, but its use is discouraged.
Modifier and Type | Class and Description |
---|---|
static class |
ArcsSet.InconsistentStateAt2PiWrapping
Specialized exception for inconsistent BSP tree state inconsistency.
|
static class |
ArcsSet.Split
Class holding the results of the
split method. |
Region.Location
Constructor and Description |
---|
ArcsSet(BSPTree<Sphere1D> tree,
double tolerance)
Build an arcs set from an inside/outside BSP tree.
|
ArcsSet(Collection<SubHyperplane<Sphere1D>> boundary,
double tolerance)
Build an arcs set from a Boundary REPresentation (B-rep).
|
ArcsSet(double tolerance)
Build an arcs set representing the whole circle.
|
ArcsSet(double lower,
double upper,
double tolerance)
Build an arcs set corresponding to a single arc.
|
Modifier and Type | Method and Description |
---|---|
List<Arc> |
asList()
Build an ordered list of arcs representing the instance.
|
ArcsSet |
buildNew(BSPTree<Sphere1D> tree)
Build a region using the instance as a prototype.
|
protected void |
computeGeometricalProperties()
Compute some geometrical properties.
|
Iterator<double[]> |
iterator() |
BoundaryProjection<Sphere1D> |
projectToBoundary(Point<Sphere1D> point)
Project a point on the boundary of the region.
|
ArcsSet.Split |
split(Arc arc)
Split the instance in two parts by an arc.
|
applyTransform, checkPoint, checkPoint, checkPoint, checkPoint, contains, copySelf, getBarycenter, getBoundarySize, getSize, getTolerance, getTree, intersection, isEmpty, isEmpty, isFull, isFull, setBarycenter, setBarycenter, setSize
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
forEach, spliterator
public ArcsSet(double tolerance) throws MathIllegalArgumentException
tolerance
- tolerance below which close sub-arcs are merged togetherMathIllegalArgumentException
- if tolerance is smaller than Sphere1D.SMALLEST_TOLERANCE
public ArcsSet(double lower, double upper, double tolerance) throws MathIllegalArgumentException
If either lower
is equals to upper
or
the interval exceeds \( 2 \pi \), the arc is considered
to be the full circle and its initial defining boundaries
will be forgotten. lower
is not allowed to be greater
than upper
(an exception is thrown in this case).
lower
- lower bound of the arcupper
- upper bound of the arctolerance
- tolerance below which close sub-arcs are merged togetherMathIllegalArgumentException
- if lower is greater than upper
or tolerance is smaller than Sphere1D.SMALLEST_TOLERANCE
public ArcsSet(BSPTree<Sphere1D> tree, double tolerance) throws ArcsSet.InconsistentStateAt2PiWrapping, MathIllegalArgumentException
The leaf nodes of the BSP tree must have a
Boolean
attribute representing the inside status of
the corresponding cell (true for inside cells, false for outside
cells). In order to avoid building too many small objects, it is
recommended to use the predefined constants
Boolean.TRUE
and Boolean.FALSE
tree
- inside/outside BSP tree representing the arcs settolerance
- tolerance below which close sub-arcs are merged togetherArcsSet.InconsistentStateAt2PiWrapping
- if the tree leaf nodes are not
consistent across the \( 0, 2 \pi \) crossingMathIllegalArgumentException
- if tolerance is smaller than Sphere1D.SMALLEST_TOLERANCE
public ArcsSet(Collection<SubHyperplane<Sphere1D>> boundary, double tolerance) throws ArcsSet.InconsistentStateAt2PiWrapping, MathIllegalArgumentException
The boundary is provided as a collection of sub-hyperplanes
. Each sub-hyperplane has the
interior part of the region on its minus side and the exterior on
its plus side.
The boundary elements can be in any order, and can form
several non-connected sets (like for example polygons with holes
or a set of disjoints polyhedrons considered as a whole). In
fact, the elements do not even need to be connected together
(their topological connections are not used here). However, if the
boundary does not really separate an inside open from an outside
open (open having here its topological meaning), then subsequent
calls to the checkPoint
method will not be meaningful anymore.
If the boundary is empty, the region will represent the whole space.
boundary
- collection of boundary elementstolerance
- tolerance below which close sub-arcs are merged togetherArcsSet.InconsistentStateAt2PiWrapping
- if the tree leaf nodes are not
consistent across the \( 0, 2 \pi \) crossingMathIllegalArgumentException
- if tolerance is smaller than Sphere1D.SMALLEST_TOLERANCE
public ArcsSet buildNew(BSPTree<Sphere1D> tree)
This method allow to create new instances without knowing exactly the type of the region. It is an application of the prototype design pattern.
The leaf nodes of the BSP tree must have a
Boolean
attribute representing the inside status of
the corresponding cell (true for inside cells, false for outside
cells). In order to avoid building too many small objects, it is
recommended to use the predefined constants
Boolean.TRUE
and Boolean.FALSE
. The
tree also must have either null internal nodes or
internal nodes representing the boundary as specified in the
getTree
method).
protected void computeGeometricalProperties()
The properties to compute are the barycenter and the size.
computeGeometricalProperties
in class AbstractRegion<Sphere1D,Sphere1D>
public BoundaryProjection<Sphere1D> projectToBoundary(Point<Sphere1D> point)
projectToBoundary
in interface Region<Sphere1D>
projectToBoundary
in class AbstractRegion<Sphere1D,Sphere1D>
point
- point to checkpublic List<Arc> asList()
This method builds this arcs set as an ordered list of
Arc
elements. An empty tree will build an empty list
while a tree representing the whole circle will build a one
element list with bounds set to \( 0 and 2 \pi \).
Arc
elementspublic Iterator<double[]> iterator()
The iterator returns the limit angles pairs of sub-arcs in trigonometric order.
The iterator does not support the optional remove
operation.
public ArcsSet.Split split(Arc arc)
arc
- splitting arcCopyright © 2016-2022 CS GROUP. All rights reserved.