foreach edge (edges in polygon, clockwise) construct parallel line distance d from edge, store it in an array done foreach parallel line find intersection with next line in array, allowing for wrap around store intersection in an array done #intersections are the vertexes of your new polygon