作者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
→ tomnelson:光看程式很難猜,給的資料太少了,從變數命名也看不出來 09/23 17:05
→ tomnelson:話說,這程式寫得滿爛的,這跑起來效能不好吧? 我猜這是直 09/23 17:07
→ tomnelson:接從paper或公式變過來的程式... 09/23 17:07
→ MOONRAKER:前面不是回答你這是國中數學了 絕對值+二次函數 09/24 00:25
→ MOONRAKER:B0..B3如此 前面的多項式依次帶進去就結了 怎麼刪掉了 09/24 00:26
→ MOONRAKER:疊加一下總會吧 喂 09/24 00:28