00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef PARAMETRICLINE_H
00018 #define PARAMETRICLINE_H
00019
00020 #include "Point3D.h"
00021 #include "Vector3D.h"
00022 #include <QVector>
00023
00024 class ANALYSIS_EXPORT ParametricLine
00026 {
00027 protected:
00029 int mDegree;
00031 ParametricLine* mParent;
00033 QVector<Point3D*>* mControlPoly;
00034 public:
00036 ParametricLine();
00038 ParametricLine( ParametricLine* par, QVector<Point3D*>* controlpoly );
00040 virtual ~ParametricLine();
00041 virtual void add( ParametricLine* pl ) = 0;
00042 virtual void calcFirstDer( float t, Vector3D* v ) = 0;
00043 virtual void calcSecDer( float t, Vector3D* v ) = 0;
00044
00045 virtual void calcPoint( float t, Point3D* ) = 0;
00046 virtual void changeDirection() = 0;
00047
00048 virtual const Point3D* getControlPoint( int number ) const = 0;
00049 virtual const QVector<Point3D*>* getControlPoly() const = 0;
00050 virtual int getDegree() const = 0;
00051 virtual ParametricLine* getParent() const = 0;
00052
00053 virtual void remove( int i ) = 0;
00054 virtual void setControlPoly( QVector<Point3D*>* cp ) = 0;
00055 virtual void setParent( ParametricLine* paral ) = 0;
00056 };
00057
00058
00059
00060 inline ParametricLine::ParametricLine() : mParent( 0 ), mControlPoly( 0 )
00061 {
00062
00063 }
00064
00065 inline ParametricLine::ParametricLine( ParametricLine* par, QVector<Point3D*>* controlpoly ) : mParent( par ), mControlPoly( controlpoly )
00066 {
00067
00068 }
00069
00070 inline ParametricLine::~ParametricLine()
00071 {
00072
00073 }
00074
00075 #endif
00076
00077
00078
00079
00080
00081
00082
00083