NAME SbCylinderPlaneProjector "SbCylPlnProj" "" { cylinder-plane projector }

INCLUDE projectors/SbCylinderPlaneProjector.h

DESC { \cSbCylinderPlaneProjector\. 
projects a window space point (usually based on the mouse location)
onto a surface defined by a cylinder and plane cutting through the cylinder.
Two projected points can produce a rotation
along the cylinder's axis.
When the mouse position projects onto the plane, the
rotations will be as if the plane is being dragged,
causing the cylinder to roll beneath it.
\p
Incremental changes (delta rotation) can be computed during
interactive sessions. Cylinder projectors are typically used to write
interactive 3D manipulators and viewers.
}

METHOD "" SbCylinderPlaneProjector(float edgeTol = .9, SbBool orientToEye = TRUE) {}
METHOD "createCyl" SbCylinderPlaneProjector( const SbCylinder &cyl,
			      float edgeTol = .9, SbBool orientToEye = TRUE) {
Constructors. The first uses a default cylinder aligned with the Y axis
with radius 1.0; the cylinder is supplied in the second.
The position of the plane is specified as a fraction of the cylinder radius
with the parameter \vedgeTol\..
A tolerance value of 1.0 positions the plane
down the center of the cylinder. A tolerance value of 0.5 defines
the longitudinal plane halfway between the center and the outside
edge of the cylinder.  The default value is .9, so that almost
half the cylinder is in front of the plane.
The \vorientToEye\.
parameter determines whether the plane is perpendicular to the
eye, or perpendicular to the cylinder's Z axis.  Setting that parameter to TRUE
(the default) specifies that the plane be perpendicular to the
eye, which is most often the desired behavior.
\p
The default view volume is undefined, and the working space is identity.
}

METHOD "" ~SbCylinderPlaneProjector() { Destructor. }
    
ALSO { 
SbCylinderSheetProjector,
SbLineProjector, SbPlaneProjector, SbSpherePlaneProjector,
SbSphereProjector, SbSphereSectionProjector, SbSphereSheetProjector
}



