de.grogra.vecmath.geom
Class CSGUnion
java.lang.Object
de.grogra.vecmath.geom.VolumeBase
de.grogra.vecmath.geom.CompoundVolume
de.grogra.vecmath.geom.UnionBase
de.grogra.vecmath.geom.CSGUnion
- All Implemented Interfaces:
- Volume
public class CSGUnion
- extends UnionBase
An instance of this class represents the union of a list of volumes
as defined by Constructive Solid Geometry.
- Author:
- Ole Kniemeyer
Constructor Summary |
CSGUnion()
Creates a new CSGUnion whose list of volumes
is empty. |
CSGUnion(Volume a,
Volume b)
Creates a new CSGUnion whose list of volumes
is set to [a, b] . |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CSGUnion
public CSGUnion()
- Creates a new
CSGUnion
whose list of volumes
is empty.
CSGUnion
public CSGUnion(Volume a,
Volume b)
- Creates a new
CSGUnion
whose list of volumes
is set to [a, b]
.
computeIntersections
public boolean computeIntersections(Line line,
int which,
IntersectionList list,
Intersection excludeStart,
Intersection excludeEnd)
- Description copied from interface:
Volume
- Computes intersections between the boundary surface of this object
and the specified
line
. The intersections are added
to list
in ascending order of distance
(i.e., of Intersection.parameter
), where the
parameter
has to lie between line.start
and line.end
.
Implementations of this method must not
clear or modify the existing intersections in list
.
The parameter which
has to be one of
Intersection.ALL
, Intersection.CLOSEST
,
Intersection.ANY
. It determines if all intersections
have to be added to the list, only the closest (minimal
value of Intersection.parameter
), or an arbitrary
of the set of all intersections. Only in case of ALL
,
the return value of this method is precise.
If specific intersection points should be excluded from the list
of computed intersections, they have to be specified in
excludeStart
and excludeEnd
.
The intersection point of excludeStart
has to be the
starting point of line
, the intersection point of
excludeEnd
has to be the end point of line
.
The exclusion of intersections is a useful feature for
ray-tracing, e.g., when a ray is re-emitted at an intersection point
in another direction.
- Parameters:
line
- a linewhich
- one of Intersection.ALL
,
Intersection.CLOSEST
, Intersection.ANY
, this
determines which intersections have to be added to list
list
- the intersections are added to this listexcludeStart
- intersection at start point which shall be excluded, or null
excludeEnd
- intersection at end point which shall be excluded, or null
- Returns:
true
iff the beginning of the line lies
within the volume (i.e., if the line starts within the volume or
enters the volume at the starting point); however note that the returned
value is valid only if which == Intersection.ALL
operator$or
public Volume operator$or(Volume v)
- Description copied from interface:
Volume
- This operator method creates the union of this volume
and
v
.
- Specified by:
operator$or
in interface Volume
- Overrides:
operator$or
in class VolumeBase
- Parameters:
v
- a volume
- Returns:
- the union of this volume and
v
- See Also:
CSGUnion