简单实现python画圆功能


Posted in Python onJanuary 25, 2018

本文实例为大家分享了python实现画圆功能的具体代码,供大家参考,具体内容如下

简单实现python画圆功能

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.patches import Polygon 
import matplotlib.patches as mpatches 
 
fig = plt.figure(figsize = (16,8)) 
ax = fig.gca() 
ax.set_xlim(-5,18) 
ax.set_ylim(-5,8) 
alpha = np.linspace(-np.pi,np.pi,30)  
t = np.linspace(-np.pi,np.pi,100) 
def ppp(nc , na , c , sx , sy): 
 beta = alpha[na] 
 gam = alpha[na+1] 
 x = [] ; y = [] ; 
 r = 0.5*nc 
 x.append(r*np.cos(beta)) ; y.append(r*np.sin(beta)) ; 
 tt = np.linspace(beta,gam,10) 
 for i in range(len(tt)): 
  x.append(r*np.cos(tt[i])) 
  y.append(r*np.sin(tt[i])) 
 r-=0.5 
 x.append(r*np.cos(gam)) ; y.append(r*np.sin(gam)) 
 tt = np.linspace(gam,beta,10) 
 for i in range(len(tt)): 
  x.append(r*np.cos(tt[i])) ; y.append(r*np.sin(tt[i])) 
 x = np.array(x) ; y = np.array(y) 
 verts = list(zip(x+sx,y+sy)) 
 poly = Polygon(verts , facecolor=c , edgecolor=c) 
 ax.add_patch(poly) 
 
#ppp(2,0,'r',0,0) 
def get_coordiate(x , y): 
 beta = (alpha[y]+alpha[y+1])/2 
 pr = 0.5*(x+x-1)/2 
 sx = pr*np.cos(beta) ; sy = pr*np.sin(beta) 
 return sx,sy 
def pp_arrow(x,y): 
 print x , y 
 sx , sy = get_coordiate(x, y) 
 for i in range(-1,2): 
  for j in range(-1,2): 
   if i == 0 and j == 0: 
    continue 
   ex , ey = get_coordiate(x+i, y+j) 
   ax.arrow(sx,sy,ex-sx,ey-sy,head_width=0.05,head_length=0.1,fc='r',ec='r') 
    
def pxy(cx,cy): 
 for i in range(10): 
  plt.plot(0.5*i*np.cos(t)+cx,0.5*i*np.sin(t)+cy)  
 for i in range(len(alpha)): 
  plt.plot((0.5*np.cos(alpha)+cx,4.5*np.cos(alpha)+cx),(0.5*np.sin(alpha)+cy,4.5*np.sin(alpha)+cy)) 
 
cx = 13 ; cy =0 
pxy(0,0) 
pxy(13,0) 
 
mr = np.zeros((10,30)) 
mb = np.zeros((10,30)) 
 
for i in range(3,9): 
 for j in range(1,27): 
  ttt = np.random.random() 
  if ttt >= 0.98 and ttt <= 1: 
   ppp(i,j,'r',0,0) 
   mr[i][j] = 1 
   continue 
  if ttt < 0.8: 
   continue 
  else: 
   ppp(i,j,'b',0,0) 
   mb[i][j] = 1 
 
for i in range(10): 
 for j in range(30): 
  if mr[i][j] == 0: 
   continue 
  pp_arrow(i, j) 
  ma = 0 ;posx = 1 ; posy = 1 
  for k in range(-1,2): 
   for s in range(-1,2): 
    mb[i+k][j+s]=0 
    ttt = np.random.random() 
    if ttt > ma: 
     ma = ttt 
     posx = k ; posy = s 
  ppp(i+posx , j+posy , 'r' , 13 , 0) 
  ppp(i,j,'g',13,0) 
 
for i in range(10): 
 for j in range(30): 
  if mb[i][j] == 0: 
   continue 
  ppp(i , j , 'b' , 13 , 0) 
 
arrow = mpatches.Arrow(5, 0 
      ,3,0,width = 1,color = 'r') 
ax.add_patch(arrow) 
ax.text(6.2,0.5,'after one\nunit time',ha='center',va='center',color='y') 
 
xx = [4,4,4] 
yy = [7.5,6.5,5.5] 
c = ['b' , 'r' , 'g'] 
s = ['debris','satellite' , 'the location of satellite one unit time ago'] 
for i in range(3): 
 print xx[i] , yy[i] 
 rect = mpatches.Rectangle((xx[i],yy[i]),0.5,0.3,ec = c[i],fc=c[i] ) 
 ax.text(xx[i]+0.7,yy[i],s[i]) 
 ax.add_patch(rect) 
plt.axis('off') 
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python中的多重装饰器
Apr 11 Python
使用Python压缩和解压缩zip文件的教程
May 06 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
python3 读取Excel表格中的数据
Oct 16 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
Python代码需要缩进吗
Jul 01 Python
Python实战之OpenCV实现猫脸检测
Jun 26 Python
opencv检测动态物体的实现
Jul 21 Python
Python中sort和sorted函数代码解析
Jan 25 #Python
django在接受post请求时显示403forbidden实例解析
Jan 25 #Python
Python微信公众号开发平台
Jan 25 #Python
Python实现PS图像调整黑白效果示例
Jan 25 #Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 #Python
http请求 request失败自动重新尝试代码示例
Jan 25 #Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 #Python
You might like
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
通过php修改xml文档内容的方法
2015/01/23 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
2018/02/07 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
python求解水仙花数的方法
2015/05/11 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python 读取数据库并绘图的实例
2019/12/03 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
tensorflow多维张量计算实例
2020/02/11 Python
python实现图像拼接功能
2020/03/23 Python
综合办公室主任职责
2013/12/16 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python
MongoDB使用场景总结
2022/02/24 MongoDB