python画正方形内切圆_python画出三角形外接圆和内切圆的方法

刚看了《最强大脑》中英对决,其中难度最大的项目需要选手先脑补泰森多边形,再找出完全相同的两个泰森多边形。在惊呆且感叹自身头脑愚笨的同时,不免手痒想要借助电脑弄个图出来看看,闲来无事吹吹牛也是极好的。

今天先来画画外接圆和内切圆,留个大坑后面来填。

外接圆圆心:三角形垂直平分线的交点。

内切圆圆心:三角形角平分线的交点。

有了思路,就可以用万能的python来计算了

import matplotlib.pyplot as plt

from scipy.linalg import solve

import numpy as np

from matplotlib.patches import Circle

'''

求三角形外接圆和内切圆

'''

# 画个三角形

def plot_triangle(A,B,C):

x = [A[0],B[0],C[0],A[0]]

y = [A[1],B[1],C[1],A[1]]

ax = plt.gca()

ax.plot(x,y,linewidth=2)

# 画个圆

def draw_circle(x,r):

ax = plt.gca()

cir = Circle(xy=(x,y),radius=r,alpha=0.5)

ax.add_patch(cir)

ax.plot()

# 外接圆

def get_outer_circle(A,C):

xa,ya = A[0],A[1]

xb,yb = B[0],B[1]

xc,yc = C[0],C[1]

# 两条边的中点

x1,y1 = (xa + xb) / 2.0,(ya + yb) / 2.0

x2,y2 = (xb + xc) / 2.0,(yb + yc) / 2.0

# 两条线的斜率

ka = (yb - ya) / (xb - xa) if xb != xa else None

kb = (yc - yb) / (xc - xb) if xc != xb else None

alpha = np.arctan(ka) if ka != None else np.pi / 2

beta = np.arctan(kb) if kb != None else np.pi / 2

# 两条垂直平分线的斜率

k1 = np.tan(alpha + np.pi / 2)

k2 = np.tan(beta + np.pi / 2)

# 圆心

y,x = solve([[1.0,-k1],[1.0,-k2]],[y1 - k1 * x1,y2 - k2 * x2])

# 半径

r1 = np.sqrt((x - xa)**2 + (y - ya)**2)

return(x,r1)

# 内切圆

def get_inner_circle(A,C[1]

ka = (yb - ya) / (xb - xa) if xb != xa else None

kb = (yc - yb) / (xc - xb) if xc != xb else None

alpha = np.arctan(ka) if ka != None else np.pi / 2

beta = np.arctan(kb) if kb != None else np.pi / 2

a = np.sqrt((xb - xc)**2 + (yb - yc)**2)

b = np.sqrt((xa - xc)**2 + (ya - yc)**2)

c = np.sqrt((xa - xb)**2 + (ya - yb)**2)

ang_a = np.arccos((b**2 + c**2 - a**2) / (2 * b * c))

ang_b = np.arccos((a**2 + c**2 - b**2) / (2 * a * c))

# 两条角平分线的斜率

k1 = np.tan(alpha + ang_a / 2)

k2 = np.tan(beta + ang_b / 2)

kv = np.tan(alpha + np.pi / 2)

# 求圆心

y,[ya - k1 * xa,yb - k2 * xb])

ym,xm = solve([[1.0,-ka],-kv]],[ya - ka * xa,y - kv * x])

r1 = np.sqrt((x - xm)**2 + (y - ym)**2)

return(x,r1)

if __name__ == '__main__':

A = (1.,1.)

B = (5.,2.)

C = (5.,5.)

plt.axis('equal')

plt.axis('off')

plot_triangle(A,C)

x,r1 = get_outer_circle(A,C)

plt.plot(x,'ro')

draw_circle(x,r1)

x_inner,y_inner,r_inner = get_inner_circle(A,C)

plt.plot(x_inner,'ro')

draw_circle(x_inner,r_inner)

plt.show()

下面看看两个三角形的结果:

15173933431.jpg?2018025143427

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看地区的ip段_「教程」CloudFlare 自选 IP优化网站速度

前言CloudFlare 官网虽然不提供 CNAME / AAAA / A 记录接入 CloudFlare 的 CDN ,但是我们可以通过 CloudFlare Partner 免费使用 CNAME / A 记录接入 CloudFlare 。而我们正好利用 CloudFlare 使用 A 记录接入 CDN 的方式,自定义节点 IP ,例如…

android手机可以设置屏幕锁定,安卓手机屏幕锁设置方法(九个点图案)

这里以三星S5368手机屏幕锁为例随着三星S5368手机系统功能愈来愈完善,性能愈来愈强劲,越来越多的三星S5368用户们都喜欢把一些重要的信息甚至隐私放在三星S5368手机里面,但是这就有可能会让别人看到,这样一来你的三星S5368里面的信…

python win10 连接hive_使用win10+python3.5+impyla 连接大数据平台hive表的步骤与问题解决...

环境硬件配置及Hadoop,Hive版本一、安装步骤pip install pure-saslDownloading https://pypi.tuna.tsinghua.edu.cn/packages/16/83/30eaf3765de898083 75a8358f9c15d45a3dd44ed26be991471abc0b4480b/pure_sasl-0.5.1-py2.py3-none-any.whlpip install thrift_sasl0…

python将excel表按地方拆分_Python将一个Excel拆分为多个Excel

本文实例为大家分享了Python将一个Excel拆分为多个Excel的具体代码,供大家参考,具体内容如下 原始文档如下图所示将销售部门一、二、三科分别存为三个Excel 代码如下 # -*- coding: utf-8 -*- """ Created on Mon Jul 9 20:25:31 2018 au…

华为申请注册鸿蒙商标,华为申请“鸿蒙商标”,企业注册商标有什么价值?

原标题:华为申请“鸿蒙商标”,企业注册商标有什么价值?国家知识产权局商标局网站显示,华为已申请“华为鸿蒙”商标。申请日期为2018年8月24日,注册公告日期为2019年5月14日,专用权限期是从2019年5月14日到2…

html5音乐播放器设计论文,基于微信小程序的音乐播放器设计和毕业论文

摘 要随着通信技术的发展和智能设备的普及,移动互联网在近两年发展迅猛,新兴的移动社交软件“微信”逐渐走进了手机用户的生活,深受全国数亿用户的欢迎。随着微信版本的不断更新,微信也从单纯的聊天应用逐变成媒体信息、游戏娱乐…

python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...

今天给大家分享一位前辈整理的一个Python web学习路线。这位前辈由于有编程基础,所以采用了自学Python的方式。学完后主要做后端开发。希望对你有所启发。 整理的一个 python web 学习路线,这基本就是笔者自学后做后端的学习路线。入门基础 编程语言: Py…

如何把meshlab中的圆环去掉_如何设计一座太空城?

整整半个世纪前的今天,1969年7月20日,执行阿波罗11号计划的美国宇航员阿姆斯特朗和奥尔德林登上月球。而同一年,伍德斯托克音乐节的舞台前聚集了几十万名追求和平与爱的青年。在神奇的1969年,人类文明向着更为广袤与深邃的境地突飞…

axure html 360安装扩展,win10系统360浏览器添加Axure扩展的操作方法

win10系统360浏览器添加Axure扩展的操作方法?很多win10用户在使用电脑的时候,会发现win10系统360浏览器添加Axure扩展的的现象,根据小编的调查并不是所有的朋友都知道win10系统360浏览器添加Axure扩展的的问题怎么解决,不会的朋友也不用担心…

电信计算机知识考试,2020中国电信考试试题——专业知识一

1、我国对独立型STP设备要求其信令链路数不得小于( )A、7000MSU/s;B、10000MSU/s;C、14000MSU/s;D、20000MSU/s2、GSM的多址方式为( )A、FDMA; B、TDMA; C、CDMA; D、FDMA-TDMA混合技术3、以下属于被叫控制…

full outer join 与full join的区别_sleep、yield、join都是干啥的? sleep与wait有啥区别?中篇[十五]...

点击上方 “ 布衣码农 ” ,免费订阅~选择“ 设为星标 ”,第一时间免费获得更新~「布衣码农」用不到却又不得不学习了解的底层方法1。Object中的wait、notify、notifyAll,可以用于线程间的通信,核心原理为借助于监视器的入口集与等…

npu算力如何计算_异构计算神器来了,它能带来性能革命吗

前言:优化差有多要命?3A大作告诉您说到最近游戏圈子里的热门话题,刚刚在全平台上线的某“国产3A大作”显然绝对值得一提。一方面来说,靠着“抽卡化单机游戏”的设计,以及投入几十万元都难以实现全角色满状态的高氪金程…

画股票图csdn_这个股票今天是要弄啥?

点击上方蓝色字体,关注我们作者 | 四叶草编辑 | 易小投大盘点评今天市场上午走势相对弱势,盘中只有杀出一点点急跌的恐慌盘,有一些盘中的做T机会,但是确定性不是特别高,毕竟盘中的急跌相对幅度有限。下午指数随着一些概…

淮阴工学院计算机学院机房,实验室开放

计算机工程实验中心坚持每天14小时开放(7:30-21:30),在完成基础和专业等实验教学任务外,还承担了各级各类培训及考试、计算机技能实训、工程设计与开发等任务,同事开展了多种形式的社会服务,以及对周边学校的服务。本中心每天坚持…

照片识别出错_云投诉丨四川德阳市民文明手册咋满篇乱码?回应:电脑识别问题,已全部收回...

封面新闻记者 王攀 王祥龙“这是密码吗?”9月23日,有四川德阳市民反映,该市发放的《德阳市民文明手册》看不懂。从市民提供的照片上看,手册内页上全是乱码。当前,德阳市正争创全国文明城市,有市民表示&…

好身材大姐姐学计算机惊喜用英语,英语作文:一个大大的惊喜A Big Surprise

英语作文:一个大大的惊喜A Big Surprise在日常学习、工作或生活中,大家一定都接触过作文吧,作文一定要做到主题集中,围绕同一主题作深入阐述,切忌东拉西扯,主题涣散甚至无主题。那么,怎么去写作文呢&#x…

2篇word文档比较重复率_本科论文写作重复率高的原因,毕业论文降重技巧总结!...

论文重复率的问题,是大学高等院校都比较关心的一点,大学生在论文写完以后,都要经过知网论文检测,在查看重复报告的时候,无法直视,因为论文重复率提高啦。经过几次论文降重修改还是没法降低论文重复率。那么…

如何做电脑桌面应用_CAD批量转PDF?一分钟教会你CAD如何转PDF,两种方法任你选择!...

作为从事CAD设计的我,已经深深的了解到了CAD设计行业的辛苦。dwg格式的文件作为CAD文件格式常见的专业格式,它能够很好的帮助我们保存好绘制好的CAD图纸。现在几乎在很多领域都可以见到,有的时候会根据需要对CAD图纸进行格式转换。很多的网友…

添加列属性_css多列属性

多列属性多列布局类似报纸或杂志中的排版方式,主要用以控制大篇幅文本。1、column-count : 分隔列数说明:属性规定元素应该被分隔的列数用于:除table外的非替换块级元素, table cells, inline-block元素2、column-gap : 设置列与列…

pyautogui typewrite_解放双手:Pyautogui帮你work

今天介绍一个很有用的python库——Pyautogui,它可以通过屏幕的xy坐标系统来确定目标位置,进而控制鼠标和键盘发送虚拟的点击和输入任务。这对于你要完成机械重复枯燥的电脑操作来说非常地方便。安装Pyautogui库很简单,命令窗口输入&#xff1…