VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
plane.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: plane.h,v $ $Revision: 1.12 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef plane_H_
10 #define plane_H_
11 
12 // \file plane.h
13 // \brief Contains the DtPlane class declaration.
14 
15 #include <vlutil/vlMachineTypes.h>
16 #include <matrix/vlVector.h>
18 
19 // forward declarations
20 class DtPoint;
21 class DtChord;
22 
23 //
24 // DtPlane represents a plane in 3-space.
26 {
27 public:
28 
29  // default constructor (returns the xy-plane)
30  DtPlane();
31 
32  // Define the plane passing through points v0, v1, and v2.
33  // the three points v0, v1, and v2, are not collinear and not coincident.
34  // The vertices v0, v1, and v2 appear in counterclockwise
35  // order when viewing the plane from outside to inside in
36  // a right-handed Cartesian coordinate system.
37  DtPlane(const DtPoint& v0, const DtPoint& v1, const DtPoint& v2);
38 
39  // Plane defined by a location and normal direction vector.
40  // \note The second parameter is passed by value so that the copy can be used
41  // internally to the function, for performance reasons.
42  DtPlane(const DtVector& point, DtVector normal);
43 
44  // define a plane by specifying the coefficients for the plane equation:
45  // Ax + By + Cz + D = 0
46  DtPlane(double a, double b, double c, double d);
47 
48  // Special version of the constructor that specifies the plane's coefficients,
49  // in that is assumes they are correct as specified.
50  // \note This version does \b not test them for correctness!
51  DtPlane(bool ignored, double a, double b, double c, double d);
52 
53  // copy constructor
54  DtPlane(const DtPlane& orig);
55 
56  // destructor
57  virtual ~DtPlane();
58 
59  // assignment operator
60  DtPlane& operator=(const DtPlane& orig);
61 
62  // Coefficients of the plane equation Ax + By + Cz + D = 0.
63  virtual double a() const;
64  virtual double b() const;
65  virtual double c() const;
66  virtual double d() const;
67 
68  // compute the vector normal to the plane.
69  virtual const DtVector normal() const;
70 
71  // determine if chord intersects the plane; time specifies the
72  // parametric value along the chord.
73  virtual bool intersects(const DtChord& chord, double& time) const;
74 
75  // print the contents of the object
76  virtual void dump() const;
77 
78  // compute the distance of a point p to the plane.
79  double distanceToPlane(const DtPoint& p) const;
80 
81  // \return point on the plane closest to the specified point.
82  DtPoint closestPointOnPlane(const DtPoint& p) const;
83 
84 protected:
85 
86  // The plane is specified by the equation Ax + By + Cz + D = 0.
87  double myA;
88  double myB;
89  double myC;
90  double myD;
91 
92 };
93 
94 #endif
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
Definition: plane.h:25
double myB
Definition: plane.h:88
#define DT_DLL_geometry
Definition: geometryDefines.h:23
double myD
Definition: plane.h:90
double myC
Definition: plane.h:89
DT_DLL_vrfutil bool intersects(const DtVector &localPoint1, const DtVector &localPoint2, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Returns true if the line segment localPoint1-localPoint2 intersects any line segment in localVert...
Definition: point.h:34
double myA
Definition: plane.h:87

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)