The most accurate method will be to divide the polygon into triangles.

You can choose any corner, and try to eliminate it by drawing a line between the adjacent corners.
Since the polygon isn't convex, you need to check.
-that the line drawn is on the inside of the polygon
-that the line doesn't intersect any of the edges.

It gets harder if the border of the polygon consists of more than one loop.

Another idea is to look at polygon filling using scanlines, for example here: