導航:首頁 > 編程語言 > bezier曲面程序matlab

bezier曲面程序matlab

發布時間:2023-12-11 10:01:00

⑴ matlab畫Bezier曲線求助

原理可參考網路的【貝塞爾曲線】,當然,英語過得去的話建議參考維基網路的【Bézier curve】(沒辦法,中文版被牆了)。

參考代碼

%控制點
p=[111;123;234;346;545;589;689];

%n為控制點的數量,t為0~1的參變數,b為平滑後的結果
n=size(p,1);
t=linspace(0,1)';
b=0;
fork=0:n-1
tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k);
b=b+tmp*p(k+1,:);
end
plot3(p(:,1),p(:,2),p(:,3),'.:',b(:,1),b(:,2),b(:,3))
gridon

⑵ 急找繪制bezier曲面代碼(matlab)

/*
產生三次方貝塞爾曲線的程序
*/

typedef struct
{
float x;
float y;
}
Point2D;

/*
cp 在此是四個元素的陣列:
cp[0] 為起始點,或上圖中的 P0
cp[1] 為第一個控制點,或上圖中的 P1
cp[2] 為第二個控制點,或上圖中的 P2
cp[3] 為結束點,或上圖中的 P3
t 為參數值,0 <= t <= 1
*/

Point2D PointOnCubicBezier( Point2D* cp, float t )
{
float ax, bx, cx;
float ay, by, cy;
float tSquared, tCubed;
Point2D result;

/* 計算多項式系數 */

cx = 3.0 * (cp[1].x - cp[0].x);
bx = 3.0 * (cp[2].x - cp[1].x) - cx;
ax = cp[3].x - cp[0].x - cx - bx;

cy = 3.0 * (cp[1].y - cp[0].y);
by = 3.0 * (cp[2].y - cp[1].y) - cy;
ay = cp[3].y - cp[0].y - cy - by;

/* 計算位於參數值 t 的曲線點 */

tSquared = t * t;
tCubed = tSquared * t;

result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;

return result;
}

/*
ComputeBezier 以控制點 cp 所產生的曲線點,填入 Point2D 結構的陣列。
呼叫者必須分配足夠的內存以供輸出結果,其為 <sizeof(Point2D) numberOfPoints>
*/

void ComputeBezier( Point2D* cp, int numberOfPoints, Point2D* curve )
{
float dt;
int i;

dt = 1.0 / ( numberOfPoints - 1 );

for( i = 0; i < numberOfPoints; i++)
curve[i] = PointOnCubicBezier( cp, i*dt );
}

閱讀全文

與bezier曲面程序matlab相關的資料

熱點內容
app原型圖是什麼東西 瀏覽:237
ug直接用cad文件建模 瀏覽:272
蘋果電腦打開mp4文件 瀏覽:337
數據線一直發燙怎麼回事 瀏覽:830
IBM代碼5 瀏覽:279
編程時如何讓輸出結果之間有空格 瀏覽:112
怎麼復制網上文件 瀏覽:675
蘋果怎麼關掉網站禁止訪問 瀏覽:478
win10適合機械硬碟嗎 瀏覽:586
qq頭像歐美男霸氣頭像 瀏覽:368
java批量修改數據返回值 瀏覽:517
wp81創建文件夾 瀏覽:968
iphone高科技軟體 瀏覽:654
手機端怎麼看網頁代碼 瀏覽:925
什麼軟體能把手機變成蘋果版本的 瀏覽:841
ps精修瓶子視頻教程 瀏覽:481
win10惠普recovery盤 瀏覽:172
電腦網路問題是怎麼回事 瀏覽:193
微信刷卡支付介面開發 瀏覽:443
win10電腦屏幕旋轉90度怎麼復原 瀏覽:456

友情鏈接