简单实现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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
Python heapq使用详解及实例代码
Jan 25 Python
python读取文件名称生成list的方法
Apr 27 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
Python实现的简单计算器功能详解
Aug 25 Python
在python中pandas的series合并方法
Nov 12 Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 Python
python retrying模块的使用方法详解
Sep 25 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
Docker如何部署Python项目的实现详解
Oct 26 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脚本代码
2011/02/19 PHP
php控制文件下载速度的方法
2015/03/24 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
快速入门Vue
2016/12/19 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
JS实现留言板功能
2017/06/17 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
详解关于React-Router4.0跳转不置顶解决方案
2019/05/10 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
Python写的服务监控程序实例
2015/01/31 Python
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
python反扒机制的5种解决方法
2021/02/06 Python
亮化工程实施方案
2014/03/17 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
周末问候语大全
2015/11/10 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
Python多个MP4合成视频的实现方法
2021/07/16 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL