Algoritmo para dividir Path2D auto-intersectado en varios caminos no auto-intersectados?

Necesito deshacerme de las auto intersecciones en una forma. La forma se construye a partir de una matriz de puntos, por lo que todos los segmentos de esa forma son líneas. (solamente líneas, sin curvas y arcos)

Anteriormente, intenté crear Path2D a partir de esos puntos, construir un Área a partir de él, y luego, usando su PathIterator, creé varios Path2D, quede alguna manera Eran subrutas de la ruta anterior, por lo que las autointercepciones desaparecieron. Pero esto no está funcionando para algunos caminos, las auto intersecciones aún permanecen allí.

Entonces, ¿podría señalarme algún lugar donde pueda encontrar un buen algoritmo para hacer algo similar?

Editar: No he encontrado nada útil en ningún lado, así que escribí mi propio algoritmo. Ver las respuestas

Respuestas a la pregunta(3)

Su respuesta a la pregunta