Проблема, которую вы видите, заключается в том, что патчи наносятся на одну и ту же плоскость, что вызывает эффект рендеринга. Это называется Z-fight .
Простое решение - добавить небольшое смещение к некоторым плоскостям, нарисованным перед остальными. Вы можете изменять это значение до тех пор, пока эффект не исчезнет, а ошибка с отступом будет минимальной.
load matrices
close all
patch([0 0 1],[0 1 0],[1 0 0],[0.8 0.8 0.8]);
axis equal
axis([0 1 0 1 0 1])
view(120,30)
hold on
T = delaunayTriangulation(Rb.');
K = convexHull(T);
d_patch = 0.001;
d_z = 0.01;
patch('Faces',K,'Vertices',T.Points + d_patch,'FaceColor','k','edgecolor','k');
patch(vertices_comp(:,1), vertices_comp(:,2) , vertices_comp(:,3)+d_z,'red')
scatter3(vertices_deg(:,1), vertices_deg(:,2) , vertices_deg(:,3),100,'o','filled','r')
scatter3(vertices_deg(:,1), vertices_deg(:,2) , vertices_deg(:,3)+2*d_z,100,'o','filled','b')
xlim([0 1])
ylim([0 1])
zlim([0,1])
box on
set(gca, 'ytick',0:0.2:1,'xtick',0:0.2:1,'ztick',0:0.2:1,'FontSize',13)
saveas(gcf,'3saveas.png')
print(gcf, '3print.png', '-dpng', '-r300', '-painters')
Вы можете сделать то же самое для синей точки, которая частично нарисована на плоскости. Просто дайте ему небольшое смещение, и оно снова появится в виде полной точки. Я нарисовал точку красным и синим, чтобы вы могли видеть смещение по местоположению.