Open Inventor Reference
SbSphereProjector.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 SbSphereProjector
48  | class. This is an abstract base class for projectors
49  | that somehow use a sphere in their projection.
50  |
51  | Author(s) : Howard Look
52  |
53  ______________ S I L I C O N G R A P H I C S I N C . ____________
54  _______________________________________________________________________
55  */
56 
57 #ifndef _SB_SPHERE_PROJECTOR_
58 #define _SB_SPHERE_PROJECTOR_
59 
61 
64 
78 
80 {
81  public:
85  virtual SbVec3f project(const SbVec2f &point) = 0;
86 
94  SbRotation &rot);
95 
98  virtual SbRotation getRotation(const SbVec3f &point1,
99  const SbVec3f &point2) = 0;
100 
103  void setSphere(const SbSphere &sph);
104 
107  const SbSphere & getSphere() const { return sphere; }
108 
111  void setOrientToEye(bool orientToEye);
114  bool isOrientToEye() const { return orientToEye; }
115 
119  void setFront(bool inFront);
122  bool isFront() const { return intersectFront; }
125  bool isPointInFront( const SbVec3f &point ) const;
126 
128  virtual void setWorkingSpace(const SbMatrix &space);
129 
132 
133  protected:
136  SbSphereProjector(bool orientToEye);
137  SbSphereProjector(const SbSphere &s, bool orientToEye);
138 
142 
144  bool orientToEye;
145  bool needSetup;
147 
150 };
151 
152 #endif /* _SB_SPHERE_PROJECTOR_ */
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition: SbSystem.h:81
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
Sphere projector.
virtual SbVec3f project(const SbVec2f &point)=0
Apply the projector using the given point, returning the point in three dimensions that it projects t...
void setFront(bool inFront)
Set whether the projector should intersect the half of the sphere that faces the eye.
void setOrientToEye(bool orientToEye)
Set and get whether the projector should always be oriented towards the eye.
virtual void setWorkingSpace(const SbMatrix &space)
Set the transform space to work in.
SbSphereProjector(bool orientToEye)
Constructors The default sphere to use has a radius of 1.0 and is centered at (0,0,...
bool isOrientToEye() const
Set and get whether the projector should always be oriented towards the eye.
bool orientToEye
TRUE if always oriented to eye.
virtual SbRotation getRotation(const SbVec3f &point1, const SbVec3f &point2)=0
Get a rotation given two points on this sphere projector.
SbSphereProjector(const SbSphere &s, bool orientToEye)
const SbSphere & getSphere() const
Set and get the sphere on which to project points.
bool isFront() const
Get whether the projector should intersect the half of the sphere that faces the eye.
bool isPointInFront(const SbVec3f &point) const
Get whether the projector should intersect the half of the sphere that faces the eye.
~SbSphereProjector()
Destructor.
SbVec3f projectAndGetRotation(const SbVec2f &point, SbRotation &rot)
Apply the projector using the given point, returning the point in three dimensions that it projects t...
void setSphere(const SbSphere &sph)
Set and get the sphere on which to project points.
SbVec3f lastPoint
cached last point on this projector
bool intersectFront
Are intersections done on the front half (if not, they're done on the back half) of the sphere?
SbSphere sphere
The sphere being used.
bool needSetup
Set TRUE whenever sphere, work space or orientation changes.
Class for representing a sphere.
Definition: SbLinear.h:1489
2D vector class.
Definition: SbLinear.h:246
3D vector class.
Definition: SbLinear.h:120