Overview | Package | Class | Tree | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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

Field Summary

Fields inherited from class de.grogra.vecmath.geom.CompoundVolume
`volumes`

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]`.

Method Summary
`boolean` | `computeIntersections(Line line, int which, IntersectionList list, Intersection excludeStart, Intersection excludeEnd)` Computes intersections between the boundary surface of this object and the specified `line`.
`Volume` | `operator$or(Volume v)` This operator method creates the union of this volume and `v`.

Methods inherited from class de.grogra.vecmath.geom.UnionBase
`contains, getExtent`

Methods inherited from class de.grogra.vecmath.geom.CompoundVolume
`boxContainsBoundary, computeNormal, computeTangents, computeUV`

Methods inherited from class de.grogra.vecmath.geom.VolumeBase
`addConvexIntersections, getId, operator$and, operator$com, operator$sub, setId`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### 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]`.

Method Detail

### 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 line
    `which` - 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 list
    `excludeStart` - 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`

Overview | Package | Class | Tree | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD