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
147
150};
151
152#endif /* _SB_SPHERE_PROJECTOR_ */
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition SbSystem.h:77
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.
const SbSphere & getSphere() const
Set and get the sphere on which to project points.
SbSphereProjector(const SbSphere &s, bool orientToEye)
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