python

超轻量级php框架startmvc

Python求两个圆的交点坐标或三个圆的交点坐标方法

更新时间:2020-06-11 11:54:02 作者:startmvc
计算两个圆的交点代码如下:#-*-coding:utf-8-*-importmathimportnumpyasnpdefinsec(p1,r1,p2,r2):x=p1[0]y=p1[1]R

计算两个圆的交点

代码如下:


# -*- 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求两个圆的交点坐标或三个圆的交点坐标方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Python 交点坐标