de.grogra.vecmath.geom
public class Cylinder extends FrustumBase
| Modifier and Type | Field and Description |
|---|---|
boolean |
baseOpen |
boolean |
topOpen |
BASE, LATERAL, scaleV, TOP| Constructor and Description |
|---|
Cylinder() |
| Modifier and Type | Method and Description |
|---|---|
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. |
void |
computeNormal(Intersection is,
Vector3d normal)
This method computes the unit normal vector of an intersection
is which has been computed previously by the invocation
of Volume.computeIntersections(de.grogra.vecmath.geom.Line, int, de.grogra.vecmath.geom.IntersectionList, de.grogra.vecmath.geom.Intersection, de.grogra.vecmath.geom.Intersection) on this volume. |
void |
computeTangents(Intersection is,
Vector3d dpdu,
Vector3d dpdv)
This method computes the derivatives of the surface point
(as function of the uv-coordinates, see
Volume.computeUV(de.grogra.vecmath.geom.Intersection, javax.vecmath.Vector2d))
with respect to u and v at the intersection point. |
void |
computeUV(Intersection is,
Vector2d uv)
This method computes the uv-coordinates of an intersection point
is which has been computed previously by the invocation
of Volume.computeIntersections(de.grogra.vecmath.geom.Line, int, de.grogra.vecmath.geom.IntersectionList, de.grogra.vecmath.geom.Intersection, de.grogra.vecmath.geom.Intersection) on this volume. |
boolean |
contains(Tuple3d point,
boolean open)
Determines if the given
point lies within this object. |
void |
getExtent(Tuple3d min,
Tuple3d max,
Variables temp)
Computes the extent of this volume, i.e., an axis-aligned
bounding box between
min and max. |
boxContainsBoundary, intersectgetDiscExtent, getDiscsExtent, getFrobeniusNorm, getObjectToWorldRotationScale, getTransformation, invalidate, invTransformPoint, scale, setTransformation, setTransformation, transformPoint, transformTranspose, transformVector, translateaddConvexIntersections, getId, operator$and, operator$com, operator$or, operator$sub, setIdpublic boolean computeIntersections(Line line, int which, IntersectionList list, Intersection excludeStart, Intersection excludeEnd)
Volumeline. 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.
line - a linewhich - one of Intersection.ALL,
Intersection.CLOSEST, Intersection.ANY, this
determines which intersections have to be added to listlist - the intersections are added to this listexcludeStart - intersection at start point which shall be excluded, or nullexcludeEnd - intersection at end point which shall be excluded, or nulltrue 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.ALLpublic void computeNormal(Intersection is, Vector3d normal)
Volumeis which has been computed previously by the invocation
of Volume.computeIntersections(de.grogra.vecmath.geom.Line, int, de.grogra.vecmath.geom.IntersectionList, de.grogra.vecmath.geom.Intersection, de.grogra.vecmath.geom.Intersection) on this volume.is - a previously computed intersectionnormal - resulting unit vector is placed in herepublic void computeTangents(Intersection is, Vector3d dpdu, Vector3d dpdv)
VolumeVolume.computeUV(de.grogra.vecmath.geom.Intersection, javax.vecmath.Vector2d))
with respect to u and v at the intersection point.is - a previously computed intersectiondpdu - resulting derivative with respect to udpdv - resulting derivative with respect to vpublic void computeUV(Intersection is, Vector2d uv)
Volumeis which has been computed previously by the invocation
of Volume.computeIntersections(de.grogra.vecmath.geom.Line, int, de.grogra.vecmath.geom.IntersectionList, de.grogra.vecmath.geom.Intersection, de.grogra.vecmath.geom.Intersection) on this volume.is - a previously computed intersectionuv - resulting uv-coordinates are placed in herepublic boolean contains(Tuple3d point, boolean open)
Volumepoint lies within this object.
If open is true, the interior of the volume
is considered (the largest open set contained in the volume,
i.e., excluding the boundary), otherwise the closure of the volume.point - a point in global world coordinatesopen - consider open or closed settrue iff point is an element of the setpublic void getExtent(Tuple3d min, Tuple3d max, Variables temp)
Volumemin and max.min - minimum coordinates of bounding box are placed in heremax - maximum coordinates of bounding box are placed in heretemp - has to be provided by the invoker, may be used in implementations