Я пытаюсь нарисовать два прямоугольника на одной фигуре в MATLAB
, используя функцию 3D isosurface
.
Определение ячеек
Таким образом, следующий код предназначен для определения "внутренней" области двух разных ящиков со значением 1.
[x, y, z] = meshgrid (-3:0.1:3, -3:0.1:3, -3:0.1:3);
BoxA = (x(:) >= -2 & x(:) <= 1) & (y(:) >= -2 & y(:) <= 1) & (z(:) >= -2 & z(:) <= 1);
BoxA = reshape(BoxA, size(x));
BoxB = (x(:) >= -1 & x(:) <= 2) & (y(:) >= -1 & y(:) <= 2) & (z(:) >= -1 & z(:) <= 2);
BoxB = reshape(BoxB, size(x));
Сюжет
А вот код для рисования вышеприведенных прямоугольников на одной фигуре.
figure; hold on;
colormap('autumn');
isosurface(BoxA,0.5);
colormap('winter');
isosurface(BoxB,0.5);
legend('BoxA', 'BoxB');
alpha(0.3); hold off;
Я определил две разные цветовые карты autumn
и winter
, но я получил только две неоднозначные коробки с одинаковой цветовой картой winter
.
Некоторые могут подумать isosurface
является излишним для рисования 3D-бокса, но я также хотел бы сделать аналогичную работу для 3D-эллипсоидов.
Кто-нибудь может дать какой-нибудь совет?