Re: Безье
- From
- Andrew Vlasov ()
- To
- Sergey Andrianov ()
- Date
- 2003-01-22T16:19:23Z
- Area
- RU.ALGORITHMS
From: "Andrew Vlasov" <vlas@dicomp.ru>
Это просто, вот мой код:
//=========
template<class X,class K> inline
void PolynomialFitPK(X xf,X xl,K kf,K kl)
{
_PolynomialFitPK(xf,xl,kf,kl,std::_Val_type(xf));
}
template<class X,class K,class T> inline
void _PolynomialFitPK(X xf,X xl,K kf,K kl,T *)
{
//f(t)=sum(k[i]*t^i,i=0,i<=n;i++),t=(0,1)
//x[i]=f(i/N);i=0,N
int iXCount=std::distance(xf,xl);
int iYCount=std::distance(kf,kl);
ASSERT(iXCount==iYCount);
X x=xf;
K k=kf;
switch(iXCount)
{
case 3:
k[0]= x[0];
k[1]= x[0]*(-3) + x[1]*4 + x[2]*(-1);
k[2]= x[0]*2 + x[1]*(-4) + x[2]*2;
break;
default:
ASSERT(FALSE);
break;
}
}
//использвание:
main()
{
Point x[3]={Point(x1,y1),Point(x2,y2), Point(x3,y3)}; //твои три точки,
с координатами (x1,y1), (x2,y2), (x3,y3)
Point k[3]; //коэффициенты полинома3
PolynomialFitPK(x,x+3,k,k+3);
}
"Sergey Andrianov" <Sergey.Andrianov@p400.f1507.n5020.z2.fidonet.org> wrote
in message news:1043015137@p400.f1507.n5020.z2.ftn...
> Здравствуй, Mike!
>
> Однажды 17-Jan-03 в 13:23 Mike 'l0ck' Kolesoff (2:5015/10.9)
> написал All по поводу
> -=- Безье -=-
>
> M'K> Имеется три точки, с координатами (x1,y1), (x2,y2), (x3,y3)
> M'K> соответственно.
> M'K> Хочется нарисовать кривую, от точки 1 до точки 3, чтобы она проходила
> M'K> через
> M'K> точку 2. Kрасивую кривую. Kак??
>
> Kак известно, через 3 точки можно провести окружность. Kрасивее кривой не
> бывает. А сабж имеет гораздо больше степеней свободы и вряд ли сможет
> сравниться с окружностью по красоте.
>
> До свидания, в 22:24 MSK
> Sergey
>
--- ifmail v.2.15dev5
* Origin: Comcor (2:5020/400)