00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CIvfArrow_h_
00026 #define _CIvfArrow_h_
00027
00028 #include <ivf/IvfComposite.h>
00029 #include <ivf/IvfCylinder.h>
00030 #include <ivf/IvfCone.h>
00031
00032 #include <ivfmath/IvfPoint3d.h>
00033 #include <ivfmath/IvfVec3d.h>
00034
00035 IvfSmartPointer(CIvfArrow);
00036
00037 #define IVF_ARROW_STANDARD 0
00038 #define IVF_ARROW_DOUBLE 1
00039
00047 class IVF_API CIvfArrow : public CIvfComposite {
00048 public:
00050 CIvfArrow ();
00051
00053 virtual ~CIvfArrow ();
00054
00055 IvfClassInfo("CIvfArrow",CIvfComposite);
00056
00065 void setArrowType(int type);
00066
00068 int getArrowType();
00069
00079 void setSize(double length, double head);
00080
00082 void getSize(double &length, double &head);
00083
00092 void setRadius(double head, double tail);
00093
00102 void setOffset(double offset);
00103
00105 double getOffset();
00106
00108 double getLength();
00109
00118 void alignVector(CIvfVec3d *vec);
00119 private:
00120 double m_offset;
00121 int m_arrowType;
00122 CIvfCylinderPtr m_tail;
00123 CIvfConePtr m_head;
00124 CIvfConePtr m_extraHead;
00125 double m_tailRadius;
00126 double m_headRadius;
00127 double m_headSize;
00128 double m_length;
00129 };
00130 #endif