Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#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