Сплайн на плоскости

В этом разделе описывается сплайн 2-го порядка, который задаётся двумя точками ( концы сплайна ) и двумя нормалями в этих точках ( необязательно единичными ):

class Spline2d
{
    Vector2d point1, point2, norm1, norm2, a, b;
public:
    Spline2d () {}
    Spline2d ( const Vector2d & p1, const Vector2d & p2, const Vector2d & n1, const Vector2d & n2 );
    Def<Vector2d> getPoint ( const Vector2d & dir ) const;
    Vector2d getPoint ( double par ) const
    {
        return point1 + ( b + a * par ) * par;
    }
};

Имеются две функции getPoint. Одна из них возвращает точку с указанной нормалью, если такая есть, а вторая возвращает точку по параметру в диапазоне от 0 ( точка p1 ) до 1 ( точка p2 ).

Пример использования этого класса можно посмотреть в приложении DEMO.

Описание класса Vector2d находится здесь.
Описание шаблона классов Def находится здесь.

Исходники находятся в approx2d.cpp

Наверх