给定两个圆的圆心和半径,计算能够包含两个圆的最小圆

# Defines two classes, Point() and Disk().
# The latter has an "area" attribute and three methods:
# - change_radius(r)
# - intersects(disk), that returns True or False depending on whether
#   the disk provided as argument intersects the disk object.
# - absorb(disk), that returns a new disk object that represents the smallest
#   disk that contains both the disk provided as argument and the disk object.
#
# Written by kangyuchengfrom math import pi, hypotclass Point:def __init__(self, x = 0, y = 0):self.x = xself.y = ydef __repr__(self):return f'Point({self.x:.2f}, {self.y:.2f})'class Disk:area = 0.00r = 0.00centre = Point()def __init__(self, **kwargs):radius = kwargs.get("radius")centre = kwargs.get("centre")if radius  is not None:self.area = radius * radius * piself.r = radiusif centre is not None:self.centre = centredef change_radius(self,r):self.r = rself.area = r * r * pidef intersects(self, disk):l = self.r + disk.rx = self.centre.x  - disk.centre.xy = self.centre.y - disk.centre.yd = hypot(x,y)if d <= l:return Trueelse:return Falsedef absorb(self, disk):x = 0.00  # 新圆的圆心 xy = 0.00  # 新圆的圆心 yr = 0.00  # 新圆的半径 rd = hypot(self.centre.x - disk.centre.x, self.centre.y - disk.centre.y)  # 两圆的圆心距离if d < max(self.r, disk.r) - min(self.r, disk.r): # 大圆包含小圆if self.r > disk.r:r = self.rx = self.centre.xy = self.centre.yelse:r = disk.rx = disk.centre.xy = disk.centre.yelse: # 两圆不互相包含r = (self.r + disk.r + d) / 2.00d1 = r-self.rd2 = r-disk.rx = self.centre.x-d1*(self.centre.x-disk.centre.x)/(d1+d2)y = self.centre.y-d1*(self.centre.y-disk.centre.y)/(d1+d2)return Disk(centre = Point(x, y), radius = r )def __repr__(self):return f'Disk({self.centre}, {self.r:.2f})'
#测试# disk_1 = Disk()
# print(disk_1.area)
# disk_2 = Disk(centre = Point(3, 0), radius = 4)
# print(disk_2.area)
# print(disk_1.intersects(disk_2))
# print( disk_2.intersects(disk_1) )
# disk_1.change_radius(2)
# disk_4 = Disk(centre=Point(-4, 0), radius=2)
# print(disk_4.intersects(disk_1))
# disk_5 = disk_4.absorb(disk_1)
# disk_5.change_radius(5)
# print(disk_5)
# disk_6 = Disk(centre = Point(1, 2), radius = 6)
# disk_7 = disk_5.absorb(disk_6)
# print(disk_7.area )
# disk_8 = Disk()
# disk_8.change_radius(7)

python计算能够包含两个圆的最小圆相关推荐

  1. python计算输入的两个数字,try...except...判断是否输入的是数字,如果是则相加

    python计算输入的两个数字,try-except-判断是否输入的是数字,如果是则相加,如果不输入q或者n,则循环一直下去: print("Enter 'q' to quit\n" ...

  2. python计算圆面积保留两位数_python中怎么实现保留两位小数

    python中怎么实现保留两位小数,两位,方法,小数,模块,四舍五入 python中怎么实现保留两位小数 易采站长站,站长之家为您整理了python中怎么实现保留两位小数的相关内容. Python中实 ...

  3. 如何使用Python计算Log中两个时间的差值

    有时候需要计算两个时间之间的差值,如果用口算很容易出现失误,这时候借助于Python就可以很容易地解决该问题1.按如下步伐操作,能有现成计算的直接用现成的,没有的再自己写函数 2.打包成exe,方便传 ...

  4. python 计算fps,两种方式优缺点总结

    超链接:深度学习工作常用方法汇总,矩阵维度变化.图片.视频等操作,包含(torch.numpy.opencv等) ------------------------------------------ ...

  5. python计算平方根保留两位小数_python 使用二分法计算平方根

    python 使用二分法计算平方根 from math import sqrt def mysqrt(num,small): assert num>0 assert small>0 low ...

  6. python计算两个矩形的重叠_python计算两个矩形框重合百分比的实例

    python计算两个矩形框重合百分比的实例 如下所示: def mat_inter(box1,box2): # 判断两个矩形是否相交 # box=(xA,yA,xB,yB) x01, y01, x02 ...

  7. 用python计算圆的面积_用Python计算大圆距

    用python计算圆的面积 The shortest distance between two locations on the surface of Earth (or any planet) is ...

  8. python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法

    计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...

  9. python计算长方形面积代码_Python计算两个矩形重合面积代码实例

    这篇文章主要介绍了Python 实现两个矩形重合面积代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 计算两个矩形的重合面积 imp ...

最新文章

  1. 在UE4中创建受《羞辱》启发的环境
  2. CAS(比较并交换)学习CAS实现原子性+volatile实现可见性,cas与synchronized比较的优缺点
  3. 【Android】Uri和Url和URN
  4. PyCharm 在Windows的有用快捷键
  5. 红橙Darren视频笔记 view的绘制流程(上) onMeasure测量代码分析 基于API27
  6. c语言 poll,c语言 linux 中 poll 的参数
  7. java Exception 处理汇总
  8. 对电机油冷分析_油冷电驱汇总(Tesla/Nidec/大众MEB/雪佛兰/华为)
  9. 【论文笔记】DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition
  10. 记第十七次CCF CSP认证
  11. java api在jdk哪里,jdk api文档在哪里
  12. 使用网上软件激活win10后,默认谷歌浏览器被锁定hao123 解决思路
  13. android串口调试源码,android串口调试助手源代码
  14. 2021-12-13 云计算平台基础架构 swift
  15. 微信小程序数据拼接_最佳方式实现微信小程序分页加载数据
  16. 锁存器Latch和触发器Flip-flop的区别
  17. Bigemap添加自定义地图,第三方地图
  18. 华北科技学院计算机专业录取分数线,2018华北科技学院在各省录取分数线【最新公布】...
  19. Java反射机制解读
  20. 使用exe4j将java程序打包成exe可执行文件遇到的问题

热门文章

  1. docker如何实现重新打tag并删除原tag的镜像([仓库名: tag] 可以查询到指定id的镜像,同一个id镜像能有多个[仓库名: tag])(增加\删除镜像仓库:标签)
  2. http中的净荷 payload(有效载荷、有效负载)是什么?
  3. Docker镜像是什么,有什么用?
  4. python sklearn.model_selection.ShuffleSplit()函数的用法
  5. Python 计算机视觉(十七)—— 基于KNN的图像分类
  6. 范数和机器学习中的范数
  7. linux——shell 中的运算
  8. 小孩孩子应用题计算机错误,孩子应用题失分的主要原因是什么?家长来看看
  9. 宁波php吧,2020年9月程序员工资统计,平均14469元
  10. 答案计算机应用技术试卷,计算机应用与技术试卷A及答案