简单实现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打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
Python手机号码归属地查询代码
May 04 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
django初始化数据库的实例
May 27 Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
python实现两张图片的像素融合
Feb 23 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
Python代码太长换行的实现
Jul 05 Python
对Django中内置的User模型实例详解
Aug 16 Python
pymysql模块的使用(增删改查)详解
Sep 09 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
浅析iis7.5安装配置php环境
2015/05/10 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
django 在原有表格添加或删除字段的实例
2018/05/27 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
ORACLE十问
2015/04/20 面试题
公司年会晚宴演讲稿
2014/01/06 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
运动会稿件200字
2014/02/07 职场文书
硕士生工作推荐信
2014/03/07 职场文书
合伙协议书
2014/04/23 职场文书
促销活动计划书
2014/05/02 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
物业公司管理制度
2015/08/05 职场文书
爱国教育主题班会
2015/08/14 职场文书
大学三好学生主要事迹范文
2015/11/03 职场文书
利用python进行数据加载
2021/06/20 Python