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 _CIvfSplineSegment3d_h_
00026 #define _CIvfSplineSegment3d_h_
00027
00028 #include <ivfmath/IvfCurveSegment3d.h>
00029
00038 class IVFMATH_API CIvfSplineSegment3d : public CIvfCurveSegment3d {
00039 private:
00040 CIvfVec3d* m_p1;
00041 CIvfVec3d* m_p2;
00042 CIvfVec3d* m_p;
00043 CIvfVec3d* m_t;
00044 CIvfVec3d* m_t1;
00045 CIvfVec3d* m_t2;
00046 double m_bias[2];
00047
00048 double h0(double t);
00049 double h1(double t);
00050 double h2(double t);
00051 double h3(double t);
00052
00053 double dh3(double t);
00054 double dh2(double t);
00055 double dh1(double t);
00056 double dh0(double t);
00057 public:
00059 CIvfSplineSegment3d();
00060
00062 virtual ~CIvfSplineSegment3d();
00063
00069 virtual CIvfVec3d* getPosition(double t);
00070
00072 virtual CIvfVec3d* getEndPoint();
00073
00075 virtual CIvfVec3d* getStartPoint();
00076
00078 virtual CIvfVec3d* getEndDirection();
00079
00081 virtual CIvfVec3d* getStartDirection();
00082
00084 double getEndBias();
00085
00087 double getStartBias();
00088
00090 void setEndBias(double bias);
00091
00093 void setStartBias(double bias);
00094
00096 void setEndPoint(CIvfVec3d* point);
00097
00099 void setStartPoint(CIvfVec3d* point);
00100
00106 double getSpeed(double t);
00107
00113 virtual CIvfVec3d* getTangent(double t);
00114 };
00115
00116 #endif