推 kevio: surf ? or surf相關 mesh, surfc ? 01/08 14:44
應該說,如果這些點剛好構成一個實心的cone...但我想畫這個cone的surface.
要怎麼弄呢? surf(x,y,z)好像不行
※ 編輯: sleeeve (74.94.77.238), 01/08/2015 14:57:28
→ geniusturtle: 知道 z = f(x,y) 的話可以用樓上的方法 01/08 17:16
→ geniusturtle: 不知道的話...重新內插? 01/08 17:17
推 Rasin: 1F就是正解了阿 怎麼可能不行 你代碼貼上來 01/08 20:59
→ Rasin: 把xy meshgrid 然後把z分別對應放入矩陣 沒有的改成nan 01/08 21:04
→ Rasin: mesh就出來了 01/08 21:05
推 Rasin: 提供一個偷懶的方法 將z=某個值的xyz全部畫一條線 01/08 21:19
→ Rasin: 但要看誤差可以忍受多少 01/08 21:20
→ YoursEver: 這個case看起來不可能靠surf, mesh之類的來畫, 01/09 13:49
→ YoursEver: 假設你的點夠密,你去matlab help看一下 isosurface 這 01/09 13:49
→ YoursEver: 個function底下的範例成式碼,或許會有用. 01/09 13:49
→ YoursEver: 你的case看起來要從meshing做起; distance transform可 01/09 13:51
→ YoursEver: 以幫你定義cone的內/外部. 01/09 13:51
num = 0;
%% loop
for x = 0 : .1 : 1
for y = -1 : .1 : 1
for z = 0 : .1 : 1
num = num + 1;
A = [x y;y z]; // PSD矩陣
a = eig(A); // 求特徵值
if (a(1) >= 0) && (a(2) >= 0) // 如果兩個特徵值接不小於0,則儲存
vecx(num) = x;
vecy(num) = y;
vecz(num) = z;
else // 否則不儲存其座標值
vecx(num) = NaN;
vecy(num) = NaN;
vecz(num) = NaN;
end
end
end
end
%% picture
figure(1)
plot3(vecx,vecy,vecz,'.')
※ 編輯: sleeeve (74.94.77.238), 01/10/2015 15:07:48
→ sleeeve: 畫出來是實心的@@ 01/10 15:08
條件是矩陣要positive semi-definite,所以用特徵值去判定。
我適用範圍內一個點一個點帶。
※ 編輯: sleeeve (74.94.77.238), 01/10/2015 15:09:45
※ 編輯: sleeeve (74.94.77.238), 01/10/2015 15:26:33