2011-09-06 87 views
4

我在用windows xp在Matlab 2010b中修補程序繪圖時遇到了一些奇怪的問題。
當我嘗試繪製下面的補丁時,我得到一個不是全部填充的補丁,但有一些空白部分。修補程序透明度問題(FaceAlpha)

如果我將渲染器設置爲'畫家'(見下文),
但這樣我就無法更改該補丁的透明度,這可以解決。
有沒有人遇到過類似的問題?任何解決方法?

x = [734608.791666667;734608.843750000;734609;734609.041666667;734609.086805556;734609.125000000;734609.250000000;734609.277777778;]; 
y = [85.7847149493030;95.4499999983124;96.4800000077516;112.549999984098;109.949999996456;118.299999970804;120.450000002981;112.600000008944;]; 

figure; 
set(gcf, 'Renderer', 'opengl'); 
patch(x, y, 'r'); 
title('this plot is with wrong vertices positions'); 

figure; 
set(gcf, 'Renderer', 'painters'); 
patch(x, y, 'r', 'FaceAlpha', 0.1); 
title('this plot is OK, but renderer ignores the transparency'); 

figure; 
set(gcf, 'Renderer', 'opengl'); 
patch(x, y, 'r', 'FaceAlpha', 0.1); 
title('this plot is with wrong vertices positions, but with transparency'); 
+0

+1的確很怪異。我想知道它是否也可以在Mac/Linux上重現(您應該將其作爲MathWorks的錯誤文件) – Amro

回答

4

問題似乎從浮點精度某處MATLAB發起 - > OpenGL渲染管道(我猜測)。

如果操縱x到:

x = [734608.791666667;734608.843750000;734609;734609.041666667;734609.086805556;734609.125000000;734609.250000000;734609.277777778;]; 
x = (x - mean(x)); 

的曲線似乎很好地工作。

+0

確實可行。由於x值實際上是datenums,我使用x = x-floor(min(x))來代替。謝謝! –