简单实现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选择排序算法的实现代码
Nov 21 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
在Django中使用Sitemap的方法讲解
Jul 22 Python
Python random模块用法解析及简单示例
Dec 18 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
Python3 实现串口两进程同时读写
Jun 12 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 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
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
PHP加密解密类实例代码
2016/07/20 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
php常用正则函数实例小结
2016/12/29 PHP
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
详解vue 命名视图
2019/08/14 Javascript
vue + axios get下载文件功能
2019/09/25 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
vuex实现购物车功能
2020/06/28 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
python中反射用法实例
2015/03/27 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
python实现祝福弹窗效果
2019/04/07 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
keras 读取多标签图像数据方式
2020/06/12 Python
python如何快速拼接字符串
2020/10/28 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
Intersport西班牙:在线体育商店
2019/11/06 全球购物
后勤人员岗位职责
2013/12/17 职场文书
社区服务标语
2014/07/01 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
Vue深入理解插槽slot的使用
2022/08/05 Vue.js