简单实现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实现画圆功能
  • python生成圆形图片的方法
(0)

相关推荐

  • python实现画圆功能

    本文实例为大家分享了python实现画圆功能的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- """ __author__= 'Du' __creation_time__= '2018/1/4 17:30' """ import numpy as np import matplotlib.pyplot as plt # 该行用于设置chart 的样式,可以注掉 # plt.style.use("mys

  • python处理圆角图片、圆形图片的例子

    效果图如下: 图1(头像图片剪成圆形的,其他为透明) 图2(给图片的4个角加椭圆) 以前没处理过,处理起来真是有点费力呀. 用到的模块: 复制代码 代码如下: import os, mathimport Imageimport ImageDraw 1 头像图片剪成圆形的,其他为透明 搜索了好久,没有找到比较好的方法,有个博客(不好意思,忘记博客地址了)用了一个比较诡异的方法,我试了一下,除了处理jpg图片没有格式转换,其他的都没有问题,我当时就先按照那个方法来了 复制代码 代码如下: def c

  • python生成圆形图片的方法

    本文实例为大家分享了python生成圆形图片的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- """ __author__= 'Du' __creation_time__= '2018/1/5 9:08' """ import os, math from PIL import Image def circle(): ima = Image.open("ball1.jpg").convert(

  • 简单实现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(

  • Android自定义View画圆功能

    本文实例为大家分享了Android自定义View画圆的具体代码,供大家参考,具体内容如下 引入布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&q

  • 简单实现python收发邮件功能

    今天记录一下如何使用python收发邮件,知识要点在python内置的poplib和stmplib模块的使用上. 1. 准备工作 首先,我们需要有一个测试邮箱,我们使用新浪邮箱,而且要进行如下设置: 在新浪邮箱首页的右上角找到设置->更多设置,然后在左边选择"客户端/pop/imap/smtp": 最后,将Pop3/smtp服务的服务状态打开即可: 2. poplib接收邮件 首先,介绍一下poplib登录邮箱和下载邮件的一些接口: self.popHost = 'pop.sin

  • Python实现的圆形绘制(画圆)示例

    本文实例讲述了Python实现的圆形绘制.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 import numpy as np import matplotlib.pyplot as plt # ========================================== # 圆的基本信息 # 1.圆半径 r = 2.0 # 2.圆心坐标 a, b = (0., 0.) # ==============================

  • Python使用pylab库实现画线功能的方法详解

    本文实例讲述了Python使用pylab库实现画线功能的方法.分享给大家供大家参考,具体如下: pylab 提供了比较强大的画图功能,但是函数和参数都比较多,很容易搞混.我们平常使用最多的应该是画线了.下面,简单的对一些常用的划线函数进行了封装,方便使用. # -*- coding: utf-8 -*- import pylab import random class MiniPlotTool : ''' A mini tool to draw lines using pylab ''' bas

  • Python 用turtle实现用正方形画圆的例子

    最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路. 每次都用乌龟(turtle)来画出一个正方形,然后通过旋转3°后,继续画一样的正方形,在通过120次循环后就实现了完整的圆,这里当然也可以用其他的角度和次数,只要能完成360度就可以了. 先看完成的图形和代码. 代码如下: import turtle window = turtle.Screen() #设置好画图的基本参数 window.bgcolor("blue")

  • Python实现简单的获取图片爬虫功能示例

    本文实例讲述了Python实现简单的获取图片爬虫功能.分享给大家供大家参考,具体如下: 简单Python爬虫,获得网页上的照片 #coding=utf-8 import urllib import re def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.comp

  • Python 实现简单的shell sed替换功能(实例讲解)

    code: f = open('yesterday','r',encoding='utf-8') f2 = open('yesterday.bak','w',encoding='utf-8') old_str = input('请输入要修改的字符:') replace_str = input('请输入替换成的字符:') for line in f.readlines(): line = line.replace(old_str,replace_str) print(line) f2.write(

  • python操作小程序云数据库实现简单的增删改查功能

    不止python,你可以利用任何语言那实现通过http请求来操作你自己的小程序云数据库了 背景 也是在最近吧,小程序更新了云开发 HTTP API 文档,提供了小程序外访问云开发资源的能力,使用 HTTP API 开发者可在已有服务器上访问云资源,实现与云开发的互通. 原本云数据库还是相对封闭的,只能通过自己的小程序或者云函数来进行访问,而现在,你只要调用官方提供的接口就能实现对云函数的增删改查了. 这里通过 python 作为演示来进行简单的测试,当然你也可以使用 java , php 等任何

随机推荐