2013-03-30 53 views
0

基本上,我試圖在三角形網格的網格上進行二維有限元解的可視化。所以我要用三角形去做三角形,並使用fill3函數來繪製它。現在我做MATLAB中fill3函數的自定義顏色映射?

% K is the number of mesh elements 

for i=1:K 
    % x,y,z are 3x1 vectors of the x,y,and z coordinates of the triangle vertices respectively 
    fill3(x,y,z,gradient(z)) 
end 

這樣做的問題是,對於每個單獨的三角形,用梯度(z)的顏色映射裝置的z上的當前三角形的最小值對應於最小和z的最大值對應於最大值。

我想要的是在所有三角形上的色彩映射表具有一致性,就像使用「衝浪」功能時一樣。任何想法如何做到這一點?

回答

1

您可以使用fill3行中的三角形的全局最大值進行歸一化。因此,對於每個三角形,計算梯度(z)並查找它的最大值和最小值。收集所有這些值,找到最大值和最小值的全球。將這些值表示爲gmax,gmin,然後我們可以根據這些值規範整個數據集。例如

fill3(x,y,z, (gradient(z)-gmin)/(gmax-gmin)) 

這應該取所有梯度值並將它們映射到所有三角形的區間[0,1]。然後色彩地圖應該在三角形之間保持一致。

+0

嗯,我明白這背後的理由。因此,對於每個三角形,計算梯度(z)並找到其最大值。然後在所有三角形之間比較以找出「局部」最大值的最大值?我試圖實現這一點,並得到了一些奇怪的結果顏色 – user1799323

+0

看到我編輯的答案 – bla

相關問題