计算两个圆的交点
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# -*- coding: utf-8 -*-
import math
import numpy as np
def insec(p1,r1,p2,r2):
x = p1[ 0 ]
y = p1[ 1 ]
R = r1
a = p2[ 0 ]
b = p2[ 1 ]
S = r2
d = math.sqrt(( abs (a - x)) * * 2 + ( abs (b - y)) * * 2 )
if d > (R + S) or d < ( abs (R - S)):
print ( "Two circles have no intersection" )
return
elif d = = 0 and R = = S :
print ( "Two circles have same center!" )
return
else :
A = (R * * 2 - S * * 2 + d * * 2 ) / ( 2 * d)
h = math.sqrt(R * * 2 - A * * 2 )
x2 = x + A * (a - x) / d
y2 = y + A * (b - y) / d
x3 = round (x2 - h * (b - y) / d, 2 )
y3 = round (y2 + h * (a - x) / d, 2 )
x4 = round (x2 + h * (b - y) / d, 2 )
y4 = round (y2 - h * (a - x) / d, 2 )
print (x3, y3)
print (x4, y4)
c1 = np.array([x3, y3])
c2 = np.array([x4, y4])
return c1,c2
P1 = np.array([ - 5 , 0 ])
R1 = 10
P2 = np.array([ 5 , 0 ])
R2 = 5
C = insec(P1,R1,P2,R2)
C1 = C[ 0 ]
C2 = C[ 1 ]
|
计算三个圆的交点,首先要保证三个圆必须有共同的交点,然后调用两次函数,再求交集,即可算出三个圆的交点。
以上这篇Python求两个圆的交点坐标或三个圆的交点坐标方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/zsc201825/article/details/81634641