我有一对成对点描述多边形的点列表,如下所示:
<0,0> <0,1> <0,1> <1,0> <1,0> <1,1> <1,1> <0,0>是正方形 . 请注意,每对点描述一条线,因此我们的方块由线组成
<< 0,0> <0,1 >> << 0,1> <1,0 >> << 1,0> <1,1 >> << 1,1> <0,0 >>
然而,我必须绘制这些多边形,当所讨论的点都正确有序并且没有孔时,这些多边形可以正常工作 . 不幸的是,当输入类似时,这有时会出错
<0,0> <0,1> <1,1> <0,0> <0,1> <1,0> <1,0> <1,1>并且得到的多边形很奇怪或者当有几个洞
<0,0> <0,2> <0,2> <2,0> <2,0> <2,2> <2,2> <0,0> <1,1> <1,1.5> <1,1.5> <1.5,1.5> <1.5,1.5> <1,1>
在这些情况下,使用drawpoly(点)绘制这些多边形的初始事情是行不通的 .
这是在c#中,输入实际上是 List<GeoData>
,其中 GeoData
包含2个点(以及一些其他misq数据) . 对于输出,我正在考虑制作一个List和一个List>,其中第一组点是外线,第二个列是孔,这会起作用吗?我确实需要对多边形进行一些额外的计算,然后只绘制,但我认为使用特殊的孔列表最简单 .
这是一个例子:
左边是我目前右边的输入 .
1 回答
从您的示例中,我看到您绘制了一个 single 多边形 . 您应该为每个单独的多边形多次调用方法draw polygon(
drawpoly(points)
) .我认为更容易画出洞而不是墙,尊重原则KISS .
为此,您可以将要绘制的多边形(孔)存储在列表中 . 如果我们对数据进行分析,我们会看到 bolded 数据显示了多边形的开始和结束 .
<0,0> <0,2> <0,2> <2,0> <2,0> <2,2> <2,2> <0,0> <1,1> <1,1.5> <1,1.5> <1.5,1.5> <1.5 ,1.5> <1,1>
我们在代码中表示这一点,如下所示:
用法: