Documentation for VSpline class.

--HG--
branch : develop
This commit is contained in:
dismine 2014-01-21 19:18:05 +02:00
parent 4457a69972
commit 7ded79e2d2

View file

@ -57,85 +57,85 @@ public:
VSpline (const VSpline &spline ); VSpline (const VSpline &spline );
/** /**
* @brief VSpline constructor. * @brief VSpline constructor.
* @param p1 початкова точка сплайна. * @param p1 first point spline.
* @param p4 кінцева точка сплайна. * @param p4 last point spline.
* @param angle1 кут в градусах першої напрямної. * @param angle1 angle from first point to first control point.
* @param angle2 кут в градусах другої напрямної. * @param angle2 angle from second point to second control point.
* @param kCurve коефіцієнт кривизни сплайна. * @param kCurve coefficient of curvature spline.
* @param kAsm1 коефіцієнт довжини першої напрямної. * @param kAsm1 coefficient of length first control line.
* @param kAsm2 коефіцієнт довжини другої напрямної. * @param kAsm2 coefficient of length second control line.
*/ */
VSpline (VPointF p1, VPointF p4, qreal angle1, qreal angle2, qreal kAsm1, qreal kAsm2, qreal kCurve, VSpline (VPointF p1, VPointF p4, qreal angle1, qreal angle2, qreal kAsm1, qreal kAsm2, qreal kCurve,
qint64 idObject = 0, Draw::Draws mode = Draw::Calculation); qint64 idObject = 0, Draw::Draws mode = Draw::Calculation);
/** /**
* @brief VSpline конструктор. * @brief VSpline constructor.
* @param p1 початкова точка сплайну. * @param p1 first point spline.
* @param p2 перша контролююча точка сплайну. * @param p2 first control point.
* @param p3 друга контролююча точка сплайну. * @param p3 second control point.
* @param p4 кінцева точка сплайну. * @param p4 second point spline.
*/ */
VSpline (VPointF p1, QPointF p2, QPointF p3, VPointF p4, qreal kCurve, qint64 idObject = 0, VSpline (VPointF p1, QPointF p2, QPointF p3, VPointF p4, qreal kCurve, qint64 idObject = 0,
Draw::Draws mode = Draw::Calculation); Draw::Draws mode = Draw::Calculation);
/** /**
* @brief GetP1 повертає першу точку сплайну. * @brief GetP1 return first spline point.
* @return перша точка сплайну. * @return first point.
*/ */
VPointF GetP1 () const {return p1;} VPointF GetP1 () const {return p1;}
/** /**
* @brief GetP2 повертує першу контрольну точку сплайну. * @brief GetP2 return first control point.
* @return перша контрольна точка сплайну. * @return first control point.
*/ */
inline QPointF GetP2 () const {return p2;} inline QPointF GetP2 () const {return p2;}
/** /**
* @brief GetP3 повертає другу контрольну точку сплайну. * @brief GetP3 return second control point.
* @return друга контрольна точка сплайну. * @return second control point.
*/ */
inline QPointF GetP3 () const {return p3;} inline QPointF GetP3 () const {return p3;}
/** /**
* @brief GetP4 повертає останню точку сплайну. * @brief GetP4 return last spline point.
* @return остання точка сплайну. * @return остання точка сплайну.
*/ */
inline VPointF GetP4 () const {return p4;} inline VPointF GetP4 () const {return p4;}
/** /**
* @brief GetAngle1 повертає кут першої напрямної. * @brief GetAngle1 return first angle control line.
* @return кут в градусах. * @return angle.
*/ */
inline qreal GetAngle1 () const {return angle1;} inline qreal GetAngle1 () const {return angle1;}
/** /**
* @brief GetAngle2 повертає кут другої напрямної. * @brief GetAngle2 return second angle control line.
* @return кут в градусах. * @return angle.
*/ */
inline qreal GetAngle2() const {return angle2;} inline qreal GetAngle2() const {return angle2;}
/** /**
* @brief GetLength повертає довжину сплайну. * @brief GetLength return length of spline.
* @return довжина сплайну. * @return length.
*/ */
qreal GetLength () const; qreal GetLength () const;
/** /**
* @brief name * @brief name return spline name. Used for variables.
* @return * @return name.
*/ */
QString name () const; QString name () const;
/** /**
* @brief GetKasm1 * @brief GetKasm1 return coefficient of length first control line.
* @return * @return coefficient.
*/ */
inline qreal GetKasm1() const {return kAsm1;} inline qreal GetKasm1() const {return kAsm1;}
/** /**
* @brief GetKasm2 * @brief GetKasm2 return coefficient of length second control line.
* @return * @return coefficient.
*/ */
inline qreal GetKasm2() const {return kAsm2;} inline qreal GetKasm2() const {return kAsm2;}
/** /**
* @brief GetKcurve * @brief GetKcurve return coefficient of curvature spline.
* @return * @return coefficient
*/ */
inline qreal GetKcurve() const {return kCurve;} inline qreal GetKcurve() const {return kCurve;}
/** /**
* @brief CrossingSplLine перевіряє перетин сплайну з лінією. * @brief CrossingSplLine check intersection spline with line.
* @param line лінія з якою перевіряється перетин. * @param line line.
* @param intersectionPoint точка перетину. * @param intersectionPoint intersection point.
* @return результат перевірки. * @return result intersection.
*/ */
QLineF::IntersectType CrossingSplLine(const QLineF &line, QPointF *intersectionPoint ) const; QLineF::IntersectType CrossingSplLine(const QLineF &line, QPointF *intersectionPoint ) const;
qreal LengthT(qreal t) const; qreal LengthT(qreal t) const;
@ -151,115 +151,118 @@ public:
*/ */
QPointF CutSpline ( qreal length, QPointF &spl1p2, QPointF &spl1p3, QPointF &spl2p2, QPointF &spl2p3) const; QPointF CutSpline ( qreal length, QPointF &spl1p2, QPointF &spl1p3, QPointF &spl2p2, QPointF &spl2p3) const;
/** /**
* @brief GetPoints повертає точки з яких складається сплайн. * @brief GetPoints return list with spline points.
* @return список точок. * @return list of points.
*/ */
QVector<QPointF> GetPoints () const; QVector<QPointF> GetPoints () const;
/** /**
* @brief GetPath повертає шлях сплайну. * @brief GetPath return QPainterPath for this spline.
* @return шлях. * @return path.
*/ */
QPainterPath GetPath() const; QPainterPath GetPath() const;
/** /**
* @brief SplinePoints * @brief SplinePoints return list with spline points.
* @param p1 * @param p1 first spline point.
* @param p4 * @param p4 last spline point.
* @param angle1 * @param angle1 angle from first point to first control point.
* @param angle2 * @param angle2 angle from second point to second control point.
* @param kAsm1 * @param kAsm1 coefficient of length first control line.
* @param kAsm2 * @param kAsm2 coefficient of length second control line.
* @param kCurve * @param kCurve coefficient of curvature spline.
* @return * @return
*/ */
static QVector<QPointF> SplinePoints(const QPointF &p1, const QPointF &p4, qreal angle1, qreal angle2, qreal kAsm1, static QVector<QPointF> SplinePoints(const QPointF &p1, const QPointF &p4, qreal angle1, qreal angle2, qreal kAsm1,
qreal kAsm2, qreal kCurve); qreal kAsm2, qreal kCurve);
/** /**
* @brief operator = * @brief operator = assignmeant operator
* @param spl * @param spl spline
* @return * @return spline
*/ */
VSpline &operator=(const VSpline &spl); VSpline &operator=(const VSpline &spl);
protected: protected:
/** /**
* @brief GetPoints повертає точки з яких складається сплайн. * @brief GetPoints return list with spline points.
* @param p1 початкова точка сплайну. * @param p1 first spline point.
* @param p2 перша контролююча точка сплайну. * @param p2 first control point.
* @param p3 друга контролююча точка сплайну. * @param p3 second control point.
* @param p4 кінцева точка сплайну. * @param p4 last spline point.
* @return список точок. * @return list of points.
*/ */
static QVector<QPointF> GetPoints (const QPointF &p1, const QPointF &p2, const QPointF &p3, const QPointF &p4 ); static QVector<QPointF> GetPoints (const QPointF &p1, const QPointF &p2, const QPointF &p3, const QPointF &p4 );
private: private:
/** /**
* @brief p1 початкова точка сплайну * @brief p1 first spline point.
*/ */
VPointF p1; // перша точка VPointF p1;
/** /**
* @brief p2 перша контрольна точка сплайну. * @brief p2 first control point.
*/ */
QPointF p2; // друга точка QPointF p2;
/** /**
* @brief p3 друга контрольна точка сплайну. * @brief p3 second control point.
*/ */
QPointF p3; // третя точка QPointF p3;
/** /**
* @brief p4 кінцеві точка сплайну. * @brief p4 last spline point.
*/ */
VPointF p4; // четверта точка VPointF p4;
/** /**
* @brief angle1 кут в градусах першої напрямної. * @brief angle1 first angle control line.
*/ */
qreal angle1; // кут нахилу дотичної в першій точці qreal angle1;
/** /**
* @brief angle2 кут в градусах другої напрямної. * @brief angle2 second angle control line.
*/ */
qreal angle2; // кут нахилу дотичної в другій точці qreal angle2;
/** /**
* @brief kAsm1 * @brief kAsm1 coefficient of length first control line.
*/ */
qreal kAsm1; qreal kAsm1;
/** /**
* @brief kAsm2 * @brief kAsm2 coefficient of length second control line.
*/ */
qreal kAsm2; qreal kAsm2;
/** /**
* @brief kCurve * @brief kCurve coefficient of curvature spline.
*/ */
qreal kCurve; qreal kCurve;
/** /**
* @brief LengthBezier повертає дожину сплайну за його чотирьма точками. * @brief LengthBezier return spline length using 4 spline point.
* @param p1 початкова точка сплайну. * @param p1 first spline point
* @param p2 перша контролююча точка сплайну. * @param p2 first control point.
* @param p3 друга контролююча точка сплайну. * @param p3 second control point.
* @param p4 кінцева точка сплайну. * @param p4 last spline point.
* @return дожина сплайну. * @return length.
*/ */
qreal LengthBezier (const QPointF &p1, const QPointF &p2, const QPointF &p3, const QPointF &p4 ) const; qreal LengthBezier (const QPointF &p1, const QPointF &p2, const QPointF &p3, const QPointF &p4 ) const;
/** /**
* @brief PointBezier_r знаходить точки сплайну по його чотирьом точках. * @brief PointBezier_r find spline point using four point of spline.
* @param x1 х координата першої точки сплайну. * @param x1 х coordinate first point.
* @param y1 у координата другої точки сплайну. * @param y1 у coordinate first point.
* @param x2 х координата першої контрольної точки сплайну. * @param x2 х coordinate first control point.
* @param y2 у координата першої контрольної точки сплайну. * @param y2 у coordinate first control point.
* @param x3 х координата другої контрольної точки сплайну. * @param x3 х coordinate second control point.
* @param y3 у координата другої контрольної точки сплайну. * @param y3 у coordinate second control point.
* @param x4 х координата кінцевої точки сплайну. * @param x4 х coordinate last point.
* @param y4 у координата кінцевої точки сплайну. * @param y4 у coordinate last point.
* @param level рівень рекурсії. Напочатку повинен дорівнювати 0. * @param level level of recursion. In the begin 0.
* @param px список х координат точок сплайну. * @param px list х coordinat spline points.
* @param py список у коодринат сплайну. * @param py list у coordinat spline points.
*/ */
static void PointBezier_r ( qreal x1, qreal y1, qreal x2, qreal y2, qreal x3, qreal y3, qreal x4, qreal y4, static void PointBezier_r ( qreal x1, qreal y1, qreal x2, qreal y2, qreal x3, qreal y3, qreal x4, qreal y4,
qint16 level, QVector<qreal> &px, QVector<qreal> &py); qint16 level, QVector<qreal> &px, QVector<qreal> &py);
/** /**
* @brief CalcSqDistance розраховує довжину між точками. * @brief CalcSqDistance calculate squared distance.
* @param x1 х координата першої точки. * @param x1 х coordinate first point.
* @param y1 у координата другої точки. * @param y1 у coordinate first point.
* @param x2 х координата першої точки. * @param x2 х coordinate second point.
* @param y2 у координата другої точки. * @param y2 у coordinate second point.
* @return довжину. * @return squared length.
*/ */
static qreal CalcSqDistance ( qreal x1, qreal y1, qreal x2, qreal y2); static qreal CalcSqDistance ( qreal x1, qreal y1, qreal x2, qreal y2);
/**
* @brief CreateName create spline name.
*/
void CreateName(); void CreateName();
}; };