如何用python画一个圆(python主要是做什么的)

本文为大家分享了python实现画圆功能的实例代码,有需要的朋友请参考下文!importnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlib.patchesimportPolygonimportmatplotlib.patchesasmpatchesfig=plt.figure(figsize=(16,8))ax=…

大家好,又见面了,我是你们的朋友全栈君。

本文为大家分享了python实现画圆功能的实例代码,有需要的朋友请参考下文!

a75cd78641.jpg?201802513422

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()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129713.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • XML简单介绍

    XML简单介绍

    2021年10月3日
    40
  • centos下修改mysql默认端口_centos7修改mysql默认端口「建议收藏」

    centos下修改mysql默认端口_centos7修改mysql默认端口「建议收藏」项目运行时,一般mysql的默认端口是3306。如何修改呢?现在我将带领大家一起做实验。修改mysql的默认端口一般有三个步骤:1、编辑mysql的配置文件/etc/my.cnf修改你的端口号比如将3306修改成33232、防火墙开放3323端口3、修改项目配置文件中的配置项hostport首先是编辑配置文件,将[mysqld]下面的port=3306改成port=3323v…

    2025年6月25日
    4
  • 几个软件研发团队管理的小问题「建议收藏」

    几个软件研发团队管理的小问题

    2022年3月4日
    37
  • 关于Pycharm Interpreter报错 Invalid Python SDK/Permission Denied问题解决方案「建议收藏」

    关于Pycharm Interpreter报错 Invalid Python SDK/Permission Denied问题解决方案「建议收藏」1.问题背景之前用了Pycharm好好的,结果运行个简单的test.py文件,里面的内容是:print(“helloworld”)居然报错,程序运行居然不是exitcode0报错结果如下:程序返回了一个异常参数,这个参数实际上是说:“你的python解释器未安装成功”。Processfinishedwithexitcode-1073741515(0xC0000135)网上百度了这个参数报错的意思,我就去找了我的解释器:【File】–>【Setting】,找到解释

    2022年8月26日
    15
  • Caliburn.Micro Bootstrapper及IOC容器配置

    Caliburn.Micro Bootstrapper及IOC容器配置如果想深入学习Caliburn.Micro,Bootstrapper和IOC容器配置是重中之重,一定要弄清楚,否则很难理解CM的工作方式。配置Bootstrapper的意义如果在Boostrapper中不进行任何配置的话,Bootstrapper会首先把Bootstrapper所在程序集加载到AssemblySource.Instance中。而我们在Bootstrapper中只在Displa…

    2022年7月20日
    13
  • 一起用Python做个车牌自动识别系统,好玩又实用!

    一起用Python做个车牌自动识别系统,好玩又实用!前言前段时间,用PyQt5写了两篇文章,关于Python自制一款炫酷音乐播放器、自定义桌面动画挂件。有粉丝问我,为什么要用PyQt5,效果是不是比Tkinter赞?之前没接触过PyQt5,能不能多分享一些这方面的开发案例?今天就继续给大家分享一个实战案例,带大家一起用Python的PyQt5开发一个车牌自动识别系统!首先一起来看看最终实现的车牌识别系统效果图:下面,我们就开始介绍如何实现这款自动车牌识别系统。一、核心功能设计总体来说,我们首先要进行UI界面构建设计,根据车牌识别系统功能进行画面排

    2022年6月14日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号