Right now I have an algorithm that takes the first polygon and checks if any line segments cross the international date line. If there are, it then mirrors any x-coordinates that are negative by adding 360. This makes the polygon valid. Next I create two intersection polygons and intersect my mirrored polygon with them. I take the results and mirror the results back by checking if a coordinate is greater than 180 and subtracting 360 if it is. Then I form the above multi-polygon.
This works if the maximum x-extent of the polygon is less than 180 degrees.
Does anyone have any advice on a possibly simpler solution? Would there be interest in putting this algorithm into the boost::geometry core package?