MCPcopy Create free account
hub / github.com/BIT-DataLab/LakeBench / circle_intersection

Function circle_intersection

join/Pexeso/Pivot_Metric.py:274–291  ·  view source on GitHub ↗
(c1, c2)

Source from the content-addressed store, hash-verified

272 self.r = r
273
274def circle_intersection(c1, c2):
275 d = math.sqrt((c1.x - c2.x)**2 + (c1.y - c2.y)**2)
276 if d > c1.r + c2.r or d < abs(c1.r - c2.r):
277 # 两圆不相交或者相切
278 return []
279 elif d == 0 and c1.r == c2.r:
280 # 两圆重合
281 return []
282 else:
283 a = (c1.r**2 - c2.r**2 + d**2) / (2 * d)
284 h = math.sqrt(c1.r**2 - a**2)
285 x2 = c1.x + a * (c2.x - c1.x) / d
286 y2 = c1.y + a * (c2.y - c1.y) / d
287 x3_1 = x2 + h * (c2.y - c1.y) / d
288 y3_1 = y2 - h * (c2.x - c1.x) / d
289 x3_2 = x2 - h * (c2.y - c1.y) / d
290 y3_2 = y2 + h * (c2.x - c1.x) / d
291 return [(x3_1, y3_1), (x3_2, y3_2)]
292
293def multi_circle_intersection(circles):
294 n = len(circles)

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected