简单实现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解析json实例方法
Nov 19 Python
Python读取环境变量的方法和自定义类分享
Nov 22 Python
Django验证码的生成与使用示例
May 20 Python
python交互式图形编程实例(三)
Nov 17 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
QML用PathView实现轮播图
Jun 03 Python
python的pip有什么用
Jun 17 Python
Python日志器使用方法及原理解析
Sep 27 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 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/11/04 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
javascript常用的方法整理
2015/08/20 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python 5个顶级异步框架推荐
2020/09/09 Python
html5中监听canvas内部元素点击事件的三种方法
2019/04/28 HTML / CSS
web字体加载方案优化小结
2019/11/29 HTML / CSS
《日月潭》教学反思
2014/02/28 职场文书
关于诚信的活动方案
2014/08/18 职场文书
2014年体育工作总结
2014/11/24 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
九年级历史教学反思
2016/02/19 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript