Open Inventor Release 2023.2.3
 
Loading...
Searching...
No Matches
SbCylinderProjector.h
Go to the documentation of this file.
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_CYLINDER_PROJECTOR_
51#define _SB_CYLINDER_PROJECTOR_
52
54
80{
81 public:
86
92 virtual SbVec3f project(const SbVec2f &point) = 0;
98 virtual SbVec3f intersect( const SbLine &line ) = 0;
99
109 SbRotation &rot);
110
115 virtual SbRotation getRotation(const SbVec3f &point1,
116 const SbVec3f &point2) = 0;
117
122 void setCylinder(const SbCylinder &cyl);
123
127 const SbCylinder & getCylinder() const { return cylinder; }
128
133 void setOrientToEye(SbBool orientToEye);
137 SbBool isOrientToEye() const { return orientToEye; }
148 SbBool isFront() const { return intersectFront; }
153 SbBool isPointInFront( const SbVec3f &point ) const;
157 virtual void setWorkingSpace(const SbMatrix &space);
158
159 private:
160 // Constructors
161 // The default cylinder to is centered about the Y axis and
162 // has a radius of 1.0.
163 SbCylinderProjector(SbBool orientToEye);
165 SbBool orientToEye);
166
167 // Are intersections done on the front half ( if not, they're done on th e
168 // back half) of the cylinder?
169 SbBool intersectFront;
170
171 // Just like cylinder::intersect, except always returns
172 // the intersection that is in "front".
173 SbBool intersectCylinderFront(const SbLine &line, SbVec3f &result);
174
175 SbCylinder cylinder; // Cylinder for this projector.
176 SbBool orientToEye; // TRUE if always oriented to eye.
177 SbBool needSetup; // Set TRUE whenever cylinder,
178 // work space or orientation changes.
179
180 // Cached last point on this projector. Subclasses must set
181 // this in their project and getRotation methods.
182 SbVec3f lastPoint;
183
184};
185
186
187#endif /* _SB_CYLINDER_PROJECTOR_ */
188
Class for representing a cylinder.
Definition SbCylinder.h:56
Cylinder 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.
virtual SbRotation getRotation(const SbVec3f &point1, const SbVec3f &point2)=0
Gets a rotation given two points on this cylinder projector.
void setFront(SbBool isFront)
Sets whether the projector should intersect the half of the cylinder that faces the eye.
const SbCylinder & getCylinder() const
Gets the cylinder on which to project points.
SbBool isOrientToEye() const
Gets whether the projector should always be oriented towards the eye.
virtual SbVec3f intersect(const SbLine &line)=0
Applies the projector using the given line in world coordinates, returning the point in three dimensi...
SbBool isPointInFront(const SbVec3f &point) const
Gets whether the projector should intersect the half of the cylinder 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...
virtual ~SbCylinderProjector()
Destructor.
void setCylinder(const SbCylinder &cyl)
Sets the cylinder on which to project points.
void setOrientToEye(SbBool orientToEye)
Sets whether the projector should always be oriented towards the eye.
SbBool isFront() const
Gets whether the projector should intersect the half of the cylinder that faces the eye.
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
2D vector class.
Definition SbVec.h:76
3D vector class.
Definition SbVec.h:932
int SbBool
Boolean type.
Definition SbBase.h:87