[幾何] 類似貝茲曲線

看板C_and_CPP (C/C++)作者 (Life Bubble GT)時間16年前 (2009/09/23 16:54), 編輯推噓0(006)
留言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
接從paper或公式變過來的程式...
09/23 17:07, 3F

09/24 00:25, , 4F
前面不是回答你這是國中數學了 絕對值+二次函數
09/24 00:25, 4F

09/24 00:26, , 5F
B0..B3如此 前面的多項式依次帶進去就結了 怎麼刪掉了
09/24 00:26, 5F

09/24 00:28, , 6F
疊加一下總會吧 喂
09/24 00:28, 6F
文章代碼(AID): #1AkU919Z (C_and_CPP)
文章代碼(AID): #1AkU919Z (C_and_CPP)