computational geometry – An algorithm to split an area into multiple polygons based on other polygons intersection


I have a list of n polygons (A,B,C,D,E,...) which possibly intersect each other.

I need to find a new list of polygons (or multi-polygons) which looks like this:

(
Area only in A (A difference from the rest)
Area only in B
Area only in C
...

Area only in A and B (A intersection with B and difference from the rest)
Area only in A and C
Area only in B and C
...

Area only in A,B and C (A intersection with B and C and difference from the rest)
Area only in A,B and D 
Area only in A,B and E 
....

)```

The only way I can find is to iterate all the combinations and run a simple intersection/difference algorithms but the number rapidly increases.