13.9 Scanline Fill Polygons

For each scanline Y :

|-|-|-|-|-|-|-|-|
|---|-|-|-|---|-|
|-----|-------|-|
|-------------|-|
|-------------|-|
|-------------|-|
|-|-------|---|-|
|-|-|-|-|-|-|-|-|

Intersection points:

----|-|-|||-|
oo oo|---oooo||   intersection points
o-|-•oo--o o|o|   o --  1
o-|-|-|•oo|-|o|
o-|-|-|---|o-   • --  2
|o-----o o-o|
  o   o  •oo

 
 Y := maximum ymax in ET
 AET := empty
 REPEAT
   AET := AET + ET[Y]
   AET := AET - edges in AET with N<=1
   Y := Y - 1
   AET := edges of AET
          adjusted one scan line down
   sort AET along x
   fill spans
 UNTIL AET is empty   
ET Edge Table
ET[Y]Edge Table with max coordinate at Y
N remaining pixels in edge

Edge Representation:

            |---------|----------
          |||##xmax###|###N#####|
ymax  ----- |--------------------
            |--------dx---------|

Edge Table: sorted by (y,x)

7 ---|--|--|--|-||-|
  |- |  |  |  | || |
  o-o|--|--|--|o|o-|
6 | --  |  |  |||| |
  |-----|-----||-|||
5 o  |o-|---  |o o||
  |--|-----|--||-|||
4 o  | oo|  |o-o  |o|
  |  |  |  | -|  |||
3 o--|--|--|-oo|--|o|
  |  |  |  |  |  | |
2 o--|--|--|-----|-o
  |- |  |  |---- |--
1 |o-|--|--|o-|o-o-|
  | --  |  -  | -- |
0 ---o----o-----oo---
  0  1 2  3  4  5  6
  |-------|  |----|---|   |---|----   |----|---|   |---|----
  |   -----||--0--|6--|-||-0--|-4---||--5--|5---|||-5--|-6--
7 |-------|  |########|   |#######|   |########|   |#######|
  |       |  |---0----|   |-0.66--|   |--0.25--|   |--0.2---|
6 |-------|  |----|---|   |---|----
  |   -----||--3--|2--|-||-3--|-3--
5 |-------|  |###-1####|   |##0.5###|
4 |       |  |--------|   |-------|
  |-------|
3 |       |  |----|---|   |---|----   |----|---|   |---|----
  |-------|  |####|###|   |###|###|   |####|###|   |###|###|
2 |   -----||--0---3--|-||-4----3---||--4---3---|||-6----3--
  |-------|  |##0.5###|   |#-0.5##|   |##0.5###|   |#-0.5##|
1 |       |  |----|---|   ---------   ---------    ---------
  |-------|  |#1##|0##|
0 |   -----||---------|
  --------   |---?----|