vrecko
virtual reality framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ConstraintArea.h
Go to the documentation of this file.
1 #ifndef CONSTRAINT_AREA_H
2 #define CONSTRAINT_AREA_H
3 
4 #include <vrecko/Ability.h>
5 #include <vector>
6 #include <osg/Vec3>
7 #include <osg/Matrix>
8 #include "ConstraintHierarchy.h"
9 
10 using namespace vrecko;
11 
12 namespace APConstrainedMovement {
13  typedef vector<osg::Vec3> Vecs3;
14 
15  double vectorAngle(osg::Vec3 vector1, osg::Vec3 vector2);
16 
19  private:
20  osg::Vec3 normalVector; // Local coordinates of normal vector
21  osg::Vec3 normalVectorWorld; // World coordinates of normal vector
22  Vecs3 boundingPoints; // Local coordinates of bounding points
23  Vecs3 boundingPointsWorld; // World coordinates of bounding points
24  string areaClassString; // Name of the area class
25  string restrictorString; // Name of the area restrictor
26 
27  ConstraintHierarchyMember *cachedConstraintHierarchyMember; // Cached area class
28  public:
30  virtual ~ConstraintArea();
31 
32  ConstraintHierarchyMember *getAreaClass(ConstraintHierarchyMember *constraintHierarchyRoot);
33 
34  inline string getAreaClassString() {return areaClassString;};
35  inline void setAreaClassString(string str) {areaClassString = str;
36  cachedConstraintHierarchyMember = NULL;};
37  inline string getRestrictorString() {return restrictorString;};
38  inline void setRestrictorString(string str) {restrictorString = str;};
39 
40  void addBoundingPoint(osg::Vec3 &coords);
41  inline Vecs3 getBoundingPoints() {return boundingPoints;};
42  inline Vecs3 getBoundingPointsWorld() {return boundingPointsWorld;};
43 
44  void shift(osg::Vec3 shiftVector);
45 
46  void setNormalVector(osg::Vec3 &normalVector);
47  inline osg::Vec3 getNormalVector() {return normalVector;};
48  inline osg::Vec3 getNormalVectorWorld() {return normalVectorWorld;};
49 
50  void setWorldTransformationFromObject(EnvironmentObject *eo);
51  void applyTransformation(osg::Matrix transformationMatrix);
52 
53  void writeInfo();
54 
55  bool liesWithinArea(ConstraintArea *area);
56  double ConstraintArea::distanceFactorToArea(ConstraintArea *area);
57 
58  bool getPlaneDistanceFrom(ConstraintArea *area, double &distance);
59  protected:
60  };
61 
62 }
63 
64 #endif