Проблема с прозрачностью патча (FaceAlpha) - PullRequest
4 голосов
/ 06 сентября 2011

Я столкнулся с какой-то странной проблемой при создании патча в Matlab 2010b с Windows XP.
Когда я пытаюсь построить следующий патч, я получаю патч, который не полностью заполнен, но содержит несколько пустых частей.

Эту проблему можно решить, если установить для рендерера «Painters» (см. Ниже),
, но тогда я не смогу изменить прозрачность патча.
Кто-нибудь сталкивался с подобной проблемой раньше?любой обходной путь?

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');

1 Ответ

4 голосов
/ 06 сентября 2011

Проблема , по-видимому, возникает из-за точности с плавающей запятой где-то в конвейере рендеринга MATLAB -> OpenGL (мое предположение).

Если вы манипулируете x в:

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

Кажется, что графики работают нормально.

...