Как выбрать разные цвета для разных сторон поверхности в MATLAB - PullRequest
2 голосов
/ 25 января 2020

Я строю ориентируемые открытые поверхности в MATLAB, где каждая сторона поверхности четко определена. Я хочу, чтобы каждая сторона была разного цвета, поэтому легко понять, смотрите ли вы на «переднюю» или «заднюю». Я не видел, чтобы получить это в MATLAB. Я пробовал заднее освещение лица, но это не производит разницы. Я не уверен, что это потому, что мои данные - открытая поверхность, а не закрытая. Это также может быть выбор других переменных. Вот фрагмент кода.

       h = surf(xc,yc,-zc);
       set(h,'faceColor',[0.75 0.75 0.75],'BackFaceLighting','lit');   

Я пробовал разные варианты для этого варианта. В конечном итоге мне бы хотелось, чтобы передняя сторона (видимая) была темного оттенка серого, а задняя часть - более светлого оттенка серого. Есть случаи, когда поверхности складываются или деформируются, и часть спины видна. Также, если другая функция построения графиков, кроме surf (), делает это, пожалуйста, дайте мне знать.

SciLab фактически делает это по умолчанию с синими и желтыми (или другими комбинациями цветов). Так что мне не пришлось беспокоиться об указании опций.

1 Ответ

3 голосов
/ 25 января 2020

Вы можете построить две поверхности, одна чуть ниже другой.

Пример:

[X, Y, Z] = peaks(25);
figure;
surf(X, Y, Z, 'faceColor', [0.15 0.15 1]);
hold on
Z2 = Z - 0.01; %Set Z2 values slightly lower then Z
surf(X, Y, Z2, 'faceColor', [0.75 0.75 0.75], 'BackFaceLighting', 'lit');
hold off

Результат:
enter image description here

...