Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SbSphereProjector.h
1/*=======================================================================
2 * Copyright 1991-1996, Silicon Graphics, Inc.
3 * ALL RIGHTS RESERVED
4 *
5 * UNPUBLISHED -- Rights reserved under the copyright laws of the United
6 * States. Use of a copyright notice is precautionary only and does not
7 * imply publication or disclosure.
8 *
9 * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
10 * Use, duplication or disclosure by the Government is subject to restrictions
11 * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
12 * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
13 * in similar or successor clauses in the FAR, or the DOD or NASA FAR
14 * Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
15 * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
16 *
17 * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
18 * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
19 * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
20 * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
21 * GRAPHICS, INC.
22**=======================================================================*/
23/*=======================================================================
24** Author : Howard Look (MMM yyyy)
25**=======================================================================*/
26/*=======================================================================
27 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
28 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
29 *** ***
30 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
31 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
32 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
33 *** ***
34 *** RESTRICTED RIGHTS LEGEND ***
35 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
36 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
37 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
38 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
39 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
40 *** ***
41 *** COPYRIGHT (C) 1996-2014 BY FEI S.A.S, ***
42 *** BORDEAUX, FRANCE ***
43 *** ALL RIGHTS RESERVED ***
44**=======================================================================*/
45/*=======================================================================
46** Modified by : VSG (MMM YYYY)
47**=======================================================================*/
48
49
50#ifndef _SB_SPHERE_PROJECTOR_
51#define _SB_SPHERE_PROJECTOR_
52
53#include <Inventor/projectors/SbProjector.h>
54
79{
80 public:
81
87 virtual SbVec3f project(const SbVec2f &point) = 0;
93 virtual SbVec3f intersect( const SbLine &line ) = 0;
94
104 SbRotation &rot);
105
110 virtual SbRotation getRotation(const SbVec3f &point1,
111 const SbVec3f &point2) = 0;
112
117 void setSphere(const SbSphere &sph);
118
122 const SbSphere & getSphere() const { return sphere; }
123
128 void setOrientToEye(SbBool orientToEye);
132 SbBool isOrientToEye() const { return orientToEye; }
133
139 void setFront(SbBool inFront);
144 SbBool isFront() const { return intersectFront; }
149 SbBool isPointInFront( const SbVec3f &point ) const;
153 virtual void setWorkingSpace(const SbMatrix &space);
154
158 virtual ~SbSphereProjector() {};
159
160 private:
161 // Constructors
162 // The default sphere to use has a radius of 1.0 and is centered at (0,0,0).
163 SbSphereProjector(SbBool orientToEye);
164 SbSphereProjector(const SbSphere &s, SbBool orientToEye);
165
166 // Are intersections done on the front half (if not, they're done on
167 // the back half) of the sphere?
168 SbBool intersectFront;
169
170 // Just like sphere::intersect, except always returns
171 // the intersection that is in "front".
172 SbBool intersectSphereFront(const SbLine &l, SbVec3f &result);
173
174 SbSphere sphere; // The sphere being used.
175 SbBool orientToEye; // TRUE if always oriented to eye.
176 SbBool needSetup; // Set TRUE whenever sphere, work space
177 // or orientation changes.
178
179 // cached last point on this projector
180 SbVec3f lastPoint;
181
182};
183
184#endif /* _SB_SPHERE_PROJECTOR_ */
185
Directed line in 3D.
Definition SbLine.h:57
4x4 matrix class.
Definition SbMatrix.h:309
Base class for representing projectors.
Definition SbProjector.h:85
Class for representing a rotation.
Definition SbRotation.h:126
Class for representing a sphere.
Definition SbSphere.h:57
Sphere projector.
virtual SbVec3f project(const SbVec2f &point)=0
Applies the projector using the given point, returning the point in three dimensions that it projects...
virtual void setWorkingSpace(const SbMatrix &space)
Sets the transform space to work in.
SbBool isOrientToEye() const
Gets whether the projector should always be oriented towards the eye.
SbBool isFront() const
Gets whether the projector should intersect the half of the sphere that faces the eye.
virtual SbRotation getRotation(const SbVec3f &point1, const SbVec3f &point2)=0
Gets a rotation given two points on this sphere projector.
const SbSphere & getSphere() const
Gets the sphere on which to project points.
virtual SbVec3f intersect(const SbLine &line)=0
Applies the projector using the given line in world coordinates, returning the point in three dimensi...
void setOrientToEye(SbBool orientToEye)
Sets whether the projector should always be oriented towards the eye.
SbBool isPointInFront(const SbVec3f &point) const
Gets whether the projector should intersect the half of the sphere that faces the eye.
SbVec3f projectAndGetRotation(const SbVec2f &point, SbRotation &rot)
Applies the projector using the given point, returning the point in three dimensions that it projects...
void setSphere(const SbSphere &sph)
Sets the sphere on which to project points.
void setFront(SbBool inFront)
Sets whether the projector should intersect the half of the sphere that faces the eye.
virtual ~SbSphereProjector()
Destructor.
2D vector class.
Definition SbVec.h:76
3D vector class.
Definition SbVec.h:932
int SbBool
Boolean type.
Definition SbBase.h:87