Open Inventor Reference
SbCylinderProjector.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * Further, this software is distributed without any warranty that it is
16  * free of the rightful claim of any third person regarding infringement
17  * or the like. Any license provided herein, whether implied or
18  * otherwise, applies only to this software file. Patent licenses, if
19  * any, provided herein do not apply to combinations of this program with
20  * other software, or any other product whatsoever.
21  *
22  * You should have received a copy of the GNU Lesser General Public
23  * License along with this library; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25  *
26  * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
27  * Mountain View, CA 94043, or:
28  *
29  * http://www.sgi.com
30  *
31  * For further information regarding this notice, see:
32  *
33  * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
34  *
35  */
36 
37 
38 /*
39  * Copyright (C) 1990,91,92 Silicon Graphics, Inc.
40  *
41  _______________________________________________________________________
42  ______________ S I L I C O N G R A P H I C S I N C . ____________
43  |
44  | $Revision: 1.1.1.1 $
45  |
46  | Description:
47  | This file contains the definition of the SbCylinderProjector
48  | class. This is an abstract base class for projectors
49  | that somehow use a cylinder in their projection.
50  |
51  | The getRotation methods for an SbCylinder will always
52  | return a rotation that is about the axis of the cylinder.
53  |
54  | Author(s) : Howard Look
55  |
56  ______________ S I L I C O N G R A P H I C S I N C . ____________
57  _______________________________________________________________________
58  */
59 
60 #ifndef _SB_CYLINDER_PROJECTOR_
61 #define _SB_CYLINDER_PROJECTOR_
62 
64 
67 
85 
87 {
88  public:
89 
92 
96  virtual SbVec3f project(const SbVec2f &point) = 0;
97 
105  SbRotation &rot);
106 
109  virtual SbRotation getRotation(const SbVec3f &point1,
110  const SbVec3f &point2) = 0;
111 
114  void setCylinder(const SbCylinder &cyl);
115 
118  const SbCylinder & getCylinder() const { return cylinder; }
119 
122  void setOrientToEye(bool orientToEye);
125  bool isOrientToEye() const { return orientToEye; }
126 
130  void setFront(bool isFront);
133  bool isFront() const { return intersectFront; }
136  bool isPointInFront( const SbVec3f &point ) const;
137 
138 
140  virtual void setWorkingSpace(const SbMatrix &space);
141 
142  protected:
146  SbCylinderProjector(bool orientToEye);
148  bool orientToEye);
149 
153 
155  bool orientToEye;
156  bool needSetup;
158 
162 };
163 
164 
165 #endif /* _SB_CYLINDER_PROJECTOR_ */
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition: SbSystem.h:81
Cylinder projector.
bool needSetup
Set TRUE whenever cylinder, work space or orientation changes.
virtual SbVec3f project(const SbVec2f &point)=0
Apply the projector using the given point, returning the point in three dimensions that it projects t...
bool isFront() const
Set and get whether the projector should intersect the half of the cylinder that faces the eye.
void setFront(bool isFront)
Set and get whether the projector should intersect the half of the cylinder that faces the eye.
virtual void setWorkingSpace(const SbMatrix &space)
Set the transform space to work in.
SbCylinderProjector(bool orientToEye)
Constructors The default cylinder to is centered about the Y axis and has a radius of 1....
virtual SbRotation getRotation(const SbVec3f &point1, const SbVec3f &point2)=0
Get a rotation given two points on this cylinder projector.
const SbCylinder & getCylinder() const
Set and get the cylinder on which to project points.
~SbCylinderProjector()
Destructor.
bool orientToEye
TRUE if always oriented to eye.
void setOrientToEye(bool orientToEye)
Set and get whether the projector should always be oriented towards the eye.
bool intersectFront
Are intersections done on the front half ( if not, they're done on th e back half) of the cylinder?
bool isPointInFront(const SbVec3f &point) const
Set and get whether the projector should intersect the half of the cylinder that faces the eye.
SbVec3f projectAndGetRotation(const SbVec2f &point, SbRotation &rot)
Apply the projector using the given point, returning the point in three dimensions that it projects t...
SbVec3f lastPoint
Cached last point on this projector.
bool isOrientToEye() const
Set and get whether the projector should always be oriented towards the eye.
void setCylinder(const SbCylinder &cyl)
Set and get the cylinder on which to project points.
SbCylinder cylinder
Cylinder for this projector.
SbCylinderProjector(const SbCylinder &cyl, bool orientToEye)
Class for representing a cylinder.
Definition: SbLinear.h:1435
4x4 matrix class.
Definition: SbLinear.h:823
Base class for representing projectors.
Definition: SbProjector.h:87
Class for representing a rotation.
Definition: SbLinear.h:678
2D vector class.
Definition: SbLinear.h:246
3D vector class.
Definition: SbLinear.h:120