我编写了一个程序,可以创建一个六边形网格,一些是黑色的,一些是白色的。这是随机完成的。然后我随机选择一个六边形子集,在其边缘放置红色菱形。该脚本旨在构建具有晶粒(六边形)和孔隙空间(菱形)的假想岩石微观结构,用于材料建模。我正在使用 fill() 命令来创建每个形状。问题是当我填充红色菱形时,它下面的六边形边缘仍然显示出来。我试图发布图片,但由于这是我第一次发布,它不会让我。不过,如果有人想看,我可以发电子邮件。
所以要创建黑色六边形:
h= fill(hexXY(i,j,1)+vx,hexXY(i,j,2)+vy,'k');
set(h,'edgecolor','k')
其中 hexXY 矩阵保存六边形中心的 x 和 y 坐标,将其添加到 vx 和 vy 数组中给出了六边形上每个点的顶点。然后我对钻石做同样的事情:
h=fill(hexXY(i,j,1)+dvx,hexXY(i,j,2)+dvy,'r');
set(h,'edgecolor','r')
但是,正如我所说,六边形的黑色边缘通过红色显示出来。我按照您绘制它们的顺序提供了顶点,尽管我认为这无关紧要。我尝试了 uistack 并使用了补丁,但都不适合我。我不能将六边形边缘颜色设置为无,因为我也有白色六边形,如果我将背景颜色设置为黑色,我会在白色六边形之间看到黑线。我删除了必须从黑色或白色六边形中删除边缘,因为在两者接触的地方,边缘会产生混乱的像素化。
谁能帮我弄清楚如何正确填充红色钻石?
编辑:我之前没有提到,这仅在保存图形时发生。您在图形窗口中看不到它。我尝试使用 print() 和 hgexport(),并更改渲染器,但无济于事。这是一个从我的代码中提取数字以运行的小示例:
hold on
v1=[0.3929 0.4107 0.3929 0.3571 0.3393 0.3571];
v2=[0.6907 0.6598 0.6288 0.6288 0.6598 0.6907];
h= fill(v1,v2,'k');
set(h,'edgecolor','k')
v3=[0.3750 0.3929 0.3750 0.3571 0.3750];
v4=[0.6366 0.6288 0.6211 0.6288 0.6366];
h=fill(v3,v4,'r');
set(h,'edgecolor','r')
set(gca,'position',[0 0 1 1],'units','normalized')
set(gcf,'PaperUnits','Inches','PaperPosition',[0 0 5 5]);
hgexport(gcf, 'test', hgexport('factorystyle'), 'Format', 'tiff','Resolution',600);
这是保存的图像hgexport
: