[幾何] 類似貝茲曲線
看板C_and_CPP (C/C++)作者richard730 (Life Bubble GT)時間16年前 (2009/09/23 16:54)推噓0(0推 0噓 6→)留言6則, 2人參與討論串1/1
※ [本文轉錄自 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
→
09/23 17:05, , 1F
09/23 17:05, 1F
→
09/23 17:07, , 2F
09/23 17:07, 2F
→
09/23 17:07, , 3F
09/23 17:07, 3F
→
09/24 00:25, , 4F
09/24 00:25, 4F
→
09/24 00:26, , 5F
09/24 00:26, 5F
→
09/24 00:28, , 6F
09/24 00:28, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章