Скачиваний:
42
Добавлен:
01.05.2014
Размер:
1.16 Кб
Скачать

#include <stdafx.h>
#include "bezier.h"

/*************************************************************************
Построение кривой Безье.

Параметры:
    N       - число точек массиве минус один
    XA, YA  - массивы абсцисс и ординат с номерами от 0 до N.
    T       - параметр, положение точки на кривой. От 0 до 1.
    
Результат:
    X,Y     - точка на кривой
*************************************************************************/
void beziercurve(const int& n,
     ap::real_1d_array xa,
     ap::real_1d_array ya,
     const double& t,
     double& x,
     double& y)
{
    int i;
    int c;
    double p;

    c = 1;
    for(i = 0; i <= n; i++)
    {
        xa(i) = xa(i)*c;
        ya(i) = ya(i)*c;
        c = (n-i)*c/(i+1);
    }
    p = 1;
    for(i = 0; i <= n; i++)
    {
        xa(i) = xa(i)*p;
        ya(i) = ya(i)*p;
        p = p*t;
    }
    p = 1;
    for(i = n; i >= 0; i--)
    {
        xa(i) = xa(i)*p;
        ya(i) = ya(i)*p;
        p = p*(1-t);
    }
    x = 0;
    y = 0;
    for(i = 0; i <= n; i++)
    {
        x = x+xa(i);
        y = y+ya(i);
    }
}



Соседние файлы в папке bezier.cpp