  A basic and an improved ear clipping based algorithm for triangulating simple
polygons and polygons with holes are presented. In the basic version, the ear
with smallest interior angle is always selected to be cut in order to create
fewer sliver triangles. To reduce sliver triangles in further, a bound of angle
is set to determine whether a newly formed triangle has sharp angles, and edge
swapping is accepted when the triangle is sharp. To apply the two algorithms on
polygons with holes, "Bridge" edges are created to transform a polygon with
holes to a degenerate polygon which can be triangulated by the two algorithms.
Applications show that the basic algorithm can avoid creating sliver triangles
and obtain better triangulations than the traditional ear clipping algorithm,
and the improved algorithm can in further reduce sliver triangles effectively.
Both of the algorithms run in O(n2) time and O(n) space.
