1已知多边形各顶点坐标61856726和23写出有序边表填8充算法中的 ET 及全部 AET 的内容。
首先将所有顶点按照 x 坐标从小到大排序,同一 x 坐标下按照 y 坐标从小到大排序,得到顶点序列:(2,3),(2,6),(6,1),(6,7),(8,5)。按照填充算法的流程,构建 ET 如下:
| y | 边 | | --- | --- | | 1 | e4 | | 3 | e1,e4 | | 5 | e1,e3,e4 | | 6 | e1,e3,e5 | | 7 | e1,e5 |
其中,e1 表示边 (2,3)-(2,6),e3 表示边 (6,1)-(2,6),e4 表示边 (2,3)-(6,1),e5 表示边 (6,7)-(8,5)。注意,对于水平边,我们不插入 ET 中。
接下来,初始化 AET 为空,从上到下逐行扫描:
-
扫描到 y=1,将 e4 插入 AET 中,此时 AET 为:
| x1 | dx | y_max | | --- | --- | ----- | | 6 | -4 | 1 |
-
扫描到 y=2,AET 不变。
-
扫描到 y=3,将 e1 插入 AET 中,此时 AET 为:
| x1 | dx | y_max | | --- | --- | ----- | | 2 | 0.5 | 6 | | 6 | -4 | 1 |
-
扫描到 y=4,AET 不变。
-
扫描到 y=5,将 e3 插入 AET 中,此时 AET 为:
| x1 | dx | y_max | | --- | --- | ----- | | 2 | 0.5 | 6 | | 6 | -4 | 1 | | 6 | -0.67 | 5 |
-
扫描到 y=6,将 e5 插入 AET 中,此时 AET 为:
| x1 | dx | y_max | | --- | --- | ----- | | 2 | 0.5 | 6 | | 6 | -4 | 1 | | 6 | -0.67 | 5 | | 8 | 0.5 | 5 |
-
扫描到 y=7,将 e1 和 e5 从 AET 中删除,此时 AET 为:
| x1 | dx | y_max | | --- | --- | ----- | | 2 | 0.5 | 6 | | 6 | -0.67 | 5 |
最终得到多边形的填充结果。
原文地址: https://www.cveoy.top/t/topic/K0C 著作权归作者所有。请勿转载和采集!