简单实现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 元类使用说明
Dec 18 Python
python切换hosts文件代码示例
Dec 31 Python
python模拟鼠标拖动操作的方法
Mar 11 Python
Python多线程和队列操作实例
Jun 21 Python
python转换字符串为摩尔斯电码的方法
Jul 06 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
详谈python在windows中的文件路径问题
Apr 28 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 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
10个简化PHP开发的工具
2014/12/25 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP获取星期几的常用方法小结
2018/12/18 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
2020/08/03 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python简单实现操作Mysql数据库
2018/01/29 Python
python实现聚类算法原理
2018/02/12 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
普通大学毕业生自荐信范文
2014/02/23 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
就业证明函
2015/06/17 职场文书
2015年教师节主持词
2015/07/03 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
投资入股协议书
2016/03/22 职场文书
入党心得体会
2019/06/20 职场文书