給定控制頂點
繪製bézier曲面
執行結果如下%----------畫線----------
xs=[0 1 2;
0 1 2;
0 1 2];
ys=[0 0 0;
1 1 1;
2 2 2];
zs=[1 1.5 1;
1.5 1.7 1.5;
1 1.5 1];
hold on
x=[xs(1,1),xs(1,2)];
y=[ys(1,1),ys(1,2)];
z=[zs(1,1),zs(1,2)];
for i=1:3
for j=1:2
x=[xs(i,j),xs(i,j+1)];
y=[ys(i,j),ys(i,j+1)];
z=[zs(i,j),zs(i,j+1)];
plot3(x,y,z,'r','linewidth',2.5);
x=[xs(j,i),xs(j+1,i)];
y=[ys(j,i),ys(j+1,i)];
z=[zs(j,i),zs(j+1,i)];
plot3(x,y,z,'r','linewidth',2.5);
endend%----------畫點----------
xp=[0 1 2 0 1 2 0 1 2];
yp=[0 0 0 1 1 1 2 2 2];
zp=[1 1.5 1 1.5 1.7 1.5 1 1.5 1];
scatter3(xp,yp,zp,'b','filled')
%----------畫面----------
u=0:0.05:1;v=0:0.05:1; %這裡可以通過改變步長來調整控制網格的疏密
[u,v]=meshgrid(u,v);
d=length(u);
bu0=(1-u).^2; bu1=2.*u.*(1-u); bu2=u.^2;
bv0=(1-v).^2; bv1=2.*v.*(1-v); bv2=v.^2;
x=zeros(d);y=zeros(d);z=zeros(d);
bv=[bv0;bv1;bv2];bu=[bu0;bu1;bu2];
for i=1:3
for j=1:3
nj=d*(j-1)+1;
ni=d*(i-1)+1;
x=x+xs(i,j).*bu(nj:nj+(d-1),:).*bv(ni:ni+(d-1),:);
y=y+ys(i,j).*bu(nj:nj+(d-1),:).*bv(ni:ni+(d-1),:);
z=z+zs(i,j).*bu(nj:nj+(d-1),:).*bv(ni:ni+(d-1),:);
endendsurf(x,y,z)
axis off
(這裡的**是用screentogif製作,十分簡潔快速,強烈安利)
這裡的函式寫的很傻……而且當控制頂點的數量改變,不是9個的時候,改動就十分的大,如果以後改良的話再寫……
計算幾何與計算幾何與
博主這裡曾經學過計算幾何 下文簡稱jj 所以沒有證明或者說明某些演算法,不適合初學者食用 用一道例題及黃學長的 來理解 黃學長 include include include include include include include include include include define...
計算幾何 幾何基礎
這章早在2017年寒假就在培訓的時候由來自清華的hta老師上過了 但是本蒟蒻那時候並不是懂的太多 所以這週ww老師又上了一遍 大概記錄一下 大概就跟高中必修4的平面向量差不多 有上過的應該都會 a x1,y1 b x2,y2 a b x1x2 y1y2 a b a b cos a,b 運用 若a與b...
caioj 計算幾何 面積 計算幾何 叉積
題意 在乙個平面座標系上隨意畫一條有n個點的封閉折線 按畫線的順序給出點的座標 保證封閉折線的任意兩條邊都不相交。最後要計算這條路線包圍的面積。用叉積有關知識解決。重要結論 abs 三點的叉積 2為這三點圍成的三角形的面積。簡要證明 上圖中,黑色的三角形面積為矩形 三個三角形,設數,計算,合併同類項...