【发布时间】:2016-10-13 17:18:07
【问题描述】:
有一个网格覆盖在多边形的顶部。为了使讨论具体化,假设如下图:
我有黄色多边形,我想覆盖一个网格,如图所示。我希望根据某些规则为网格单元着色。它们并不像将相交的单元格着色为红色和其余的绿色那么简单。我想对每个网格单元进行条件检查,然后根据结果为它们着色。我不知道如何表示网格单元,然后对它们进行条件检查。这是我的第一个问题。这更像是一个数据结构问题。
接下来,如果我知道哪些单元格要染成橙色,我该怎么做?这是一道图形题。
我可以弄清楚如何为1x1 网格单元基本上是这样的点:
figure
hold on
roi=[264.418629550321 234.728971962617;207.673447537473 220.710280373832;206.60278372591 78.1869158878505;75.9817987152034 66.5046728971964;58.8511777301927 447.345794392523;201.249464668094 454.355140186916;294.39721627409 380.757009345795;447.502141327623 430.990654205608;476.410064239829 262.766355140187;464.632762312634 213.700934579439;428.230192719486 145.943925233645;365.061027837259 134.261682242991;307.245182012848 152.953271028038;285.831905781585 193.841121495327];
axis([0 500 0 500])
axis equal
view([0 -90])
X=roi(:,1);
Y=roi(:,2);
[a b] = meshgrid(1:500);
inPoly1 = inpolygon(a,b,X,Y);
imagesc(inPoly1);
line(X, Y,'Color','r');
for k = 1:25:500
x = [1 500];
y = [k k];
plot(x,y,'Color','w','LineStyle','-');
plot(x,y,'Color','k','LineStyle',':');
end
for k = 1:25:500
x = [k k];
y = [1 500];
plot(x,y,'Color','w','LineStyle','-');
plot(x,y,'Color','k','LineStyle',':');
end
这个代码sn-p也可以用来产生上面的图像。但这没有帮助。我希望能够以同样的方式处理一般的nxn 网格单元。
我有一个幼稚的想法,我将形成一个 Matlab 单元,其中包含所有作为网格单元的四边形,然后对它们进行条件检查,并使用填充命令将它们着色为多边形。有没有更好、更简单的方法让我尽可能少地重新发明轮子?如果您的建议是我应该继续这个想法,那么您能否建议一种以智能方式形成所有这些四边形的 Matlab 单元的方法?
我看到了here,但这使用了我没有的映射工具箱。因此,如果有人可以在基本的 matlab 工具箱范围内提出建议,我们将不胜感激。否则请建议python解决方案。如果难以提供代码 sn-ps,算法建议也会有所帮助。
【问题讨论】: