简单实现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生成验证码实例
Aug 21 Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
利用python如何处理nc数据详解
May 23 Python
python2.x实现人民币转大写人民币
Jun 20 Python
python2.7实现邮件发送功能
Dec 12 Python
python实现批量注册网站用户的示例
Feb 22 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
Jan 25 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
通过实例了解Python异常处理机制底层实现
Jul 23 Python
python利用appium实现手机APP自动化的示例
Jan 26 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 Python
pandas求平均数和中位数的方法实例
Aug 04 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
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
vue3.0 上手体验
2020/09/21 Javascript
python开发中range()函数用法实例分析
2015/11/12 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
如何用python批量调整视频声音
2020/12/22 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
分厂厂长岗位职责
2013/12/29 职场文书
空乘英文求职信
2014/04/13 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
工会换届选举方案
2014/05/21 职场文书
应聘会计求职信
2014/06/11 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
instantclient客户端 连接oracle数据库
2022/04/26 Oracle