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
158
162};
163
164
165#endif /* _SB_CYLINDER_PROJECTOR_ */
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition SbSystem.h:77
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.
~SbCylinderProjector()
Destructor.
bool orientToEye
TRUE if always oriented to eye.
const SbCylinder & getCylinder() const
Set and get the cylinder on which to project points.
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