Adding extra vertices removes the problems
Clipping a polygon reduces to clipping edges against
The clipping algorithm takes an ordered set of vertices [vi] and produces an ordered set of vertices [wi]. It relies on the following
The algorithm is
for each edge of clipping region
for each edge of polygon // must be in sequence
clip edge against region
switch (result of clip)
case "all inside"
output leading vertex of edge
case "all outside"
do nothing
case "cross edge leaving region"
output crossing point
case "cross entering region"
output crossing point
output leading vertex of edge
Exercise. Hand execute this algorithm on several cases to make sure that you understand exactly how it works.
Lines project to lines so projecting the vertices projects a polygon in 3D to a polygon on the view plane.
Sooner or later almost all polygons are converted to triangles
Scan converting a polygon (in 2D)
sort vertices in direction perpendicular to the scan lines
for each scan line
if scan line contains the next vertex
update and sort edge list
inside = false
for each pixel
if on next edge
inside = !inside
if (inside)
paint pixel
Exercise. Expand "update and sort edge list" to make this a working algorithm.
Exercise. Hand execute your expanded algorithm on a triangle to make sure that you understand how it works.
Exercise. Hand execute your expanded algorithm on a non-convex polygon.