简单实现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的正则表达式re模块的常用方法
Mar 09 Python
Python列表list数组array用法实例解析
Oct 28 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
Python中新式类与经典类的区别详析
Jul 10 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
Python爬虫与反爬虫大战
Jul 30 Python
Python中的min及返回最小值索引的操作
May 10 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 Python
python游戏开发Pygame框架
Apr 22 Python
python神经网络学习 使用Keras进行回归运算
May 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之字符串变相相减的代码
2007/03/19 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
Python tkinter label 更新方法
2018/10/11 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
python 实现图片裁剪小工具
2021/02/02 Python
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
拉丁舞学习者的自我评价
2013/10/27 职场文书
投标单位介绍信
2014/01/09 职场文书
电台实习生求职信
2014/02/25 职场文书
假面舞会策划方案
2014/05/29 职场文书
离婚协议书范本样本
2014/08/19 职场文书
元旦趣味活动方案
2014/08/22 职场文书
大学军训决心书
2015/02/05 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
python如何获取网络数据
2021/04/11 Python
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python