作者richard730 (Life Bubble GT)
看板C_and_CPP
标题[几何] 类似贝兹曲线
时间Wed Sep 23 16:54:24 2009
※ [本文转录自 Math 看板]
作者: richard730 (Life Bubble GT) 看板: Math
标题: [几何] 类似贝兹曲线
时间: Wed Sep 23 16:51:56 2009
curPt.x = pt[j].x*B0(u)+pt[j+1].x*B1(u)+pt[j+2].x*B2(u)+pt[j+3].x*B3(u);
curPt.y = pt[j].y*B0(u)+pt[j+1].y*B1(u)+pt[j+2].y*B2(u)+pt[j+3].y*B3(u);
U从2~5
这是什麽公式?
至於B0 B1 B2 B3
需要看的懂一点程式
float B0(float u)
{
float B0;
if(u>=0 && u<1)
B0=0.5*u*u;
else if(u>=1 && u<2)
B0=0.5*u*(2-u)+0.5*(u-1)*(3-u);
else if(u>=2 && u<3)
B0=0.5*(3-u)*(3-u);
else
B0=0;
return B0;
}
float B1(float u)
{
float B1;
if(u>=1 && u<2)
B1=0.5*(u-1)*(u-1);
else if(u>=2 && u<3)
B1=0.5*(u-1)*(3-u)+0.5*(u-2)*(4-u);
else if(u>=3 && u<4)
B1=0.5*(4-u)*(4-u);
else
B1=0;
return B1;
}
float B2(float u)
{
float B2;
if(u>=2 && u<3)
B2=0.5*(u-2)*(u-2);
else if(u>=3 && u<4)
B2=0.5*(u-2)*(4-u)+0.5*(u-3)*(5-u);
else if(u>=4 && u<5)
B2=0.5*(5-u)*(5-u);
else
B2=0;
return B2;
}
float B3(float u)
{
float B3;
if(u>=3 && u<4)
B3=0.5*(u-3)*(u-3);
else if(u>=4 && u<5)
B3=0.5*(u-3)*(5-u)+0.5*(u-4)*(6-u);
else if(u>=5 && u<6)
B3=0.5*(6-u)*(6-u);
else
B3=0;
return B3;
}
有人知道吗> <
求救求救
愿意奉上2000P!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.95.61
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.95.61
1F:→ tomnelson:光看程式很难猜,给的资料太少了,从变数命名也看不出来 09/23 17:05
2F:→ tomnelson:话说,这程式写得满烂的,这跑起来效能不好吧? 我猜这是直 09/23 17:07
3F:→ tomnelson:接从paper或公式变过来的程式... 09/23 17:07
4F:→ MOONRAKER:前面不是回答你这是国中数学了 绝对值+二次函数 09/24 00:25
5F:→ MOONRAKER:B0..B3如此 前面的多项式依次带进去就结了 怎麽删掉了 09/24 00:26
6F:→ MOONRAKER:叠加一下总会吧 喂 09/24 00:28