Intersection function returns multiple coordinates

I am trying to find intersection vertices of two polygons defined below

PG = Polygon([(0.0,0.0), (0.0,4.0), (2.0, 0.0)])
QG = shapely.affinity.rotate(PG, 10.0, origin="centroid")
print(PG.intersection(QG))

It returns a polygon which represents the intersection vertices but I get multiple vertices belonging to polygon PG and QG and not the exact intersection vertices something like this

POLYGON ((0 1.275007557649384, 0 3.233068398870882, 1.176669689726421 1.646660620547158, 1.901423900453083 0.1971521990938349, 0.7833182180345657 0, 0.2248182330207899 0, 0 1.275007557649384))

The graph looks something like this How to get the exact coordinates of intersection vertices A, B and C as shown above?

• Intersection of two overlapping polygons is a polygon. Are you perhaps more interested in finding the intersection of the boundaries of the polygons (linear rings) that would give a multipoint in this case? – user30184 Apr 10 at 7:29
• I am interested in getting just the intersection coordinates of polygons PG and QG. – Ashutosh Mishra Apr 10 at 7:38
• the vertices of the polygon are the points you want, aren't they? other wise can you mark on your image which points you do want – Ian Turton Apr 10 at 7:42
• There are 3 intersection coordinates if you see the above graph where both the polygons intersect. I want to find the coordinates of those 3 points. – Ashutosh Mishra Apr 10 at 7:48
• I can see 6 points where the boundaries of the two polygons intersect. Could you mark your favorites? Polygons intersect topologically also in all interior points which are common for both and obviously you are not interested in that. – user30184 Apr 10 at 8:11

As user30184 says, the intersection of two overlapping polygons is a polygon and with your result (light blue polygon) The intersection of the boundaries of the polygons (linearRings) gives a multipoint in you case

one = LineString(list(PG.exterior.coords))
two = LineString(list(QG.exterior.coords))
print(one.intersection(two).wkt)
MULTIPOINT (0 1.275007557649384, 0 3.233068398870882, 0.2248182330207899 0, 0.7833182180345657 0, 1.176669689726421 1.646660620547158, 1.901423900453083 0.1971521990938349) These points are also the vertices of the resulting polygon

points = [Point(pt) for pt in list(PG.intersection(QG).exterior.coords)[:-1]]
for i in points:
print(i.wkt)
POINT (0 1.275007557649384)
POINT (0 3.233068398870882)
POINT (1.176669689726421 1.646660620547158)
POINT (1.901423900453083 0.1971521990938349)
POINT (0.7833182180345657 0)
POINT (0.2248182330207899 0) But shapely alone does not allow to select the A,B,C points from the others.