matlab如何画五星红旗
OpenGL画五星红旗
#include <GL/glut.h>#include <math.h>void init (void){glClearColor(1.0,1.0,1.0,1.0); //窗口背景设置为白色 glMatrixMode(GL_PROJECTION); //设置投影参数gluOrtho2D(0.0,200.0,0.0,150.0);}void TRIANGLE(float i,float j,int r){ float PI = 3.14;f loat ax,ay,bx,by,cx,cy,dx,dy,ex,ey;ax=0;ay=r;bx=r*cos(18*PI/180);by=r*sin(18*PI/180);ex=-bx;ey=by;cx=r*sin(36*PI/180);cy=-r*cos(36*PI/180);dx=-cx;dy=cy;glColor3f(1.0,1.0,0.0);glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+ax,j+ay);glVertex2i(i+dx,j+dy);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+ax,j+ay);glVertex2i(i+cx,j+cy);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+bx,j+by);glVertex2i(i+ex,j+ey);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+bx,j+by);glVertex2i(i+dx,j+dy);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+cx,j+cy);glVertex2i(i+ex,j+ey);glEnd();}void flagSegment(void){ glMatrixMode(GL_MODELVIEW);glLoadIdentity();glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glColor3f(1.0,0.0,0.0); //颜色为红色glBegin(GL_QUADS);glVertex2i(13,140);glVertex2i(100,140);glVertex2i(100,80);glVertex2i(13,80);glEnd();TRIANGLE(28,123,9);glTranslatef(40.0f,135.0f,0.0f);glPushMatrix();glRotatef(-30.0f,0.0f,0.0f,1.0f);TRIANGLE(0,0,4);glPopMatrix();glTranslatef(7.0f,-7.0f,0.0f);glPushMatrix();glRotatef(30.0f,0.0f,0.0f,1.0f);TRIANGLE(0,0,4);glPopMatrix();glTranslatef(0.0f,-10.0f,0.0f);TRIANGLE(0,0,4);glTranslatef(-7.0f,-6.0f,0.0f);glPushMatrix();glRotatef(-30.0f,0.0f,0.0f,1.0f);TRIANGLE(0,0,4);glPopMatrix();glFlush(); //渲染}void main (int argc,char** argv)glutInit(&argc,argv); //初始化GLUTglutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //设置显示模式glutInitWindowPosition(100,100); //设置显示窗口的左上角位置 glutInitWindowSize(800,600); //设置窗口的长和高glutCreateWindow("An Example OpenGL Program" ); //创造显示窗口init(); //开始初始化过程glutDisplayFunc(flagSegment); //发送图形到显示窗口//glutReshapeFunc(reshape);glutMainLoop(); //显示所有并等候}。
MATLAB绘图初步讲解实例教程
详细描述
MATLAB提供了交互式图形工具,如 `ginput`、`axes_crossing_info`等,使用户 能够与图形进行交互。通过这些工具,用户 可以获取图形的坐标值、筛选数据等操作, 从而更深入地分析数据。交互式图形在数据 探索和可视化方面具有很高的实用价值。
04
实例教程
绘制正弦函数和余弦函数
等,可以提高绘图效率和精度。
实践项目
02
通过实践项目来巩固和加深对MATLAB绘图的理解,例如数据
拟合、图像处理等。
参加在线课程和论坛
03
参加在线课程和论坛,与其他用户交流和学习,可以扩展视野
和知识面。
THANKS
感谢观看
mat制基本图形 • 图形进阶技巧 • 实例教程 • 总结与扩展
01
MATLAB绘图基础
绘图函数简介
bar()
绘制条形图,用于 展示分类数据或离 散数据。
hist()
绘制直方图,用于 展示数据的分布情 况。
plot()
绘制二维线图,是 MATLAB中最常用 的绘图函数。
05
总结与扩展
MATLAB绘图的优势与不足
强大的数据处理能力
MATLAB提供了丰富的数据处理函数,方便 用户进行数据分析和可视化。
丰富的图形样式
MATLAB支持多种图形样式,包括散点图、 线图、柱状图等,可以满足各种绘图需求。
MATLAB绘图的优势与不足
• 交互式绘图:MATLAB支持交互式绘图,用户可以通过鼠 标操作对图形进行缩放、旋转等操作。
```
绘制饼状图
在此添加您的文本17字
总结词:饼状图用于展示各类别数据在总数据中所占的比 例。
在此添加您的文本16字
Python使用Turtle模块绘制五星红旗代码示例
Python使⽤Turtle模块绘制五星红旗代码⽰例在Udacity上课时学到了python的turtle⽅法,这是⼀个很经典的⽤来教⼩孩⼉编程的图形模块,最早起源于logo语⾔。
python 本⾝内置了这个模块,其可视化的⽅法可以帮助⼩孩⼉对编程的⼀些基本理念有所理解。
在作业提交的论坛⾥看到很多turtle画出来的精美图形,想不出什么要画的东西,于是决定拿五星红旗来练练⼿。
前期准备五星红旗绘制参数Turtle官⽅⽂档turtle的基本操作# 初始化屏幕window = turtle.Screen()# 新建turtle对象实例import turtleaTurtle = turtle.Turtle()# 海龟设置aTurtle.hideturtle() # 隐藏箭头aTurtle.speed(10) # 设置速度# 前进后退,左转右转aTurtle.fd(100) # 前进100像素aTurtle.right(90) # 右转90°aTurtle.back(100)aTurtle.left(90)# 填充颜⾊aTurtle.begin_fill()aTurtle.fillcolor('yellow')DoSomethinghere()aTurtle.end_fill()# 抬起笔和放下笔,这样进⾏的操作不会留下痕迹aTurtle.penup()aTurtle.goto(start_pos)aTurtle.fd(radius)aTurtle.pendown()绘制五星红旗代码#!/usr/bin/env python# -*- coding: utf-8 –*-''' 对于turtle类的⼀些封装⽅法,包括画正多边形,正多⾓形和五星红旗。
'''__author__ = 'Hu Wenchao'import turtleimport mathdef draw_polygon(aTurtle, size=50, n=3):''' 绘制正多边形args:aTurtle: turtle对象实例size: int类型,正多边形的边长n: int类型,是⼏边形'''for i in xrange(n):aTurtle.forward(size)aTurtle.left(360.0/n)def draw_n_angle(aTurtle, size=50, num=5, color=None):''' 绘制正n⾓形,默认为黄⾊args:aTurtle: turtle对象实例size: int类型,正多⾓形的边长n: int类型,是⼏⾓形color: str,图形颜⾊,默认不填⾊'''if color:aTurtle.begin_fill()aTurtle.fillcolor(color)for i in xrange(num):aTurtle.forward(size)aTurtle.left(360.0/num)aTurtle.forward(size)aTurtle.right(2*360.0/num)if color:aTurtle.end_fill()def draw_5_angle(aTurtle=None, start_pos=(0,0), end_pos=(0,10), radius=100, color=None):''' 根据起始位置、结束位置和外接圆半径画五⾓星args:aTurtle: turtle对象实例start_pos: int的⼆元tuple,要画的五⾓星的外接圆圆⼼end_pos: int的⼆元tuple,圆⼼指向的位置坐标点radius: 五⾓星外接圆半径color: str,图形颜⾊,默认不填⾊'''aTurtle = aTurtle or turtle.Turtle()size = radius * math.sin(math.pi/5)/math.sin(math.pi*2/5)aTurtle.left(math.degrees(math.atan2(end_pos[1]-start_pos[1], end_pos[0]-start_pos[0])))aTurtle.penup()aTurtle.goto(start_pos)aTurtle.fd(radius)aTurtle.pendown()aTurtle.right(math.degrees(math.pi*9/10))draw_n_angle(aTurtle, size, 5, color)def draw_5_star_flag(times=20.0):''' 绘制五星红旗args:times: 五星红旗的规格为30*20, times为倍数,默认⼤⼩为10倍,即300*200'''width, height = 30*times, 20*times# 初始化屏幕和海龟window = turtle.Screen()aTurtle = turtle.Turtle()aTurtle.hideturtle()aTurtle.speed(10)# 画红旗aTurtle.penup()aTurtle.goto(-width/2, height/2)aTurtle.pendown()aTurtle.begin_fill()aTurtle.fillcolor('red')aTurtle.fd(width)aTurtle.right(90)aTurtle.fd(height)aTurtle.right(90)aTurtle.fd(width)aTurtle.right(90)aTurtle.fd(height)aTurtle.right(90)aTurtle.end_fill()# 画⼤星星draw_5_angle(aTurtle, start_pos=(-10*times, 5*times), end_pos=(-10*times, 8*times), radius=3*times, color='yellow')# 画四个⼩星星stars_start_pos = [(-5, 8), (-3, 6), (-3, 3), (-5, 1)]for pos in stars_start_pos:draw_5_angle(aTurtle, start_pos=(pos[0]*times, pos[1]*times), end_pos=(-10*times, 5*times), radius=1*times, color='yellow') # 点击关闭窗⼝window.exitonclick()if __name__ == '__main__':draw_5_star_flag()结果:总结以上就是本⽂关于Python使⽤Turtle模块绘制五星红旗代码⽰例的全部内容,希望对⼤家有所帮助。
实验2 Matlab绘图操作
实验2 Matlab 绘图操作实验目的:1、 掌握绘制二维图形的常用函数;2、 掌握绘制三维图形的常用函数;3、 掌握绘制图形的辅助操作。
实验内容:1. 设sin .cos x y x x ⎡⎤=+⎢⎥+⎣⎦23051,在x=0~2π区间取101点,绘制函数的曲线。
2. 已知: y x =21,cos()y x =22,y y y =⨯312,完成下列操作:(1) 在同一坐标系下用不同的颜色和线性绘制三条曲线; (2) 以子图形式绘制三条曲线;(3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。
3.已知:ln(x x e y x x ⎧+≤⎪⎪=⎨⎪+>⎪⎩20102,在x -≤≤55区间绘制函数曲线。
4. 绘制极坐标曲线sin()a b n ρθ=+,并分析参数a 、b 、n 对曲线形状的影响。
5.在xy 平面内选择区域[][],,-⨯-8888,绘制函数z =6. 用plot 函数绘制下面分段函数的曲线。
,(),,x x f x x x x ⎧++>⎪==⎨⎪+<⎩235000507. 某工厂2005年度各季度产值(单位:万元)分别为:450.6、395.9、410.2、450.9,试绘制柱形图和饼图,并说明图形的实际意义。
8. 在同一坐标轴中绘制下列两条曲线并标注两曲线交叉点。
(1).y x =-205(2)sin()cos ,sin()sin x t tt y t tπ=⎧≤≤⎨=⎩303详细实验内容:1.设sin .cos x y x x ⎡⎤=+⎢⎥+⎣⎦23051,在x=0~2π区间取101点,绘制函数的曲线。
>> x=(0:2*pi/100:2*pi);>> y=(0.5+3*sin(x)/(1+x.^2))*cos(x); >> plot(x,y)2.已知: y x =21,cos()y x =22,y y y =⨯312,完成下列操作: (1)在同一坐标系下用不同的颜色和线性绘制三条曲线; >> x= linspace(0, 2*pi, 101);>> y1=x.*x; >> y2=cos(2x); >> y3=y1.*y2;plot(x,y1,'r:',x,y2,'b',x,y3, 'ko')(2)以子图形式绘制三条曲线;>> subplot(2,2,1),plot(x,y1)subplot(2,2,2),plot(x,y2)subplot(2,2,3),plot(x,y3)(3)分别用条形图、阶梯图、杆图和填充图绘制三条曲线。
MATLAB趣味编程(五星红旗)
本程序模拟画了一面五星红旗,纯属学习MATLAB之作。
本程序由realghost编写,如有转载请保留此信息。
如要交流请与 slqinyi@ 联系。
function nationflag()axis equalaxis([0 5 0 3.09])axis offhold onfill([0 5 5 0],[0 0 3.09 3.09],'r')drawfive(1,2,pi/10,0.5,'y')drawfive(1+cos(2*pi/10),2+sin(2*pi/10),0,0.15,'y')drawfive(1+cos(2*pi/30),2+sin(2*pi/30),pi/5,0.15,'y')drawfive(1+cos(-2*pi/30),2+sin(-2*pi/30),pi/10,0.15,'y')drawfive(1+cos(-2*pi/10),2+sin(-2*pi/10),-pi/15,0.15,'y')function drawfive(x,y,theta,r,color)axis equalt = linspace(0+theta,2*pi+theta,6);xr = x+r*cos(t);yr = y+r*sin(t);xk = zeros(1,10);yk = zeros(1,10);xk(1) = xr(1);yk(1) = yr(1);[xk(2) yk(2)] = linepoint([xr(1) yr(1)],[xr(3) yr(3)],[xr(2) yr(2)],[xr(5) yr(5)]);xk(3) = xr(2);yk(3) = yr(2);[xk(4) yk(4)] = linepoint([xr(2) yr(2)],[xr(4) yr(4)],[xr(1) yr(1)],[xr(3) yr(3)]);xk(5) = xr(3);yk(5) = yr(3);[xk(6) yk(6)] = linepoint([xr(2) yr(2)],[xr(4) yr(4)],[xr(3) yr(3)],[xr(5) yr(5)]);xk(7) = xr(4);yk(7) = yr(4);[xk(8) yk(8)] = linepoint([xr(3) yr(3)],[xr(5) yr(5)],[xr(1) yr(1)],[xr(4) yr(4)]);xk(9) = xr(5);yk(9) = yr(5);[xk(10) yk(10)] = linepoint([xr(1) yr(1)],[xr(4) yr(4)],[xr(2) yr(2)],[xr(5) yr(5)]);fill(xk,yk,color)axis equalfunction [x,y]=linepoint(p1,p2,p3,p4)%ÇóÒÔp1,p1Ϊ¶ËµãµÄÖ±ÏßÓëÒÔp3,p4Ϊ¶ËµãµÄÖ±ÏߵĽ»Õ½×ø±êx1 = p1(1);y1 = p1(2);x2 = p2(1);y2 = p2(2);x3 = p3(1);y3 = p3(2);x4 = p4(1);y4 = p4(2);if x1==x2%µÚÒ»ÌõÖ±Ïß´¹Ö±ÓÚxÖáx = x1;k2 = (y4-y3)/(x4-x3);y = k2*(x-x3)+y3;elseif x3==x4x = x3;k1 = (y2-y1)/(x2-x1);y = k1*(x-x1)+y1;elsek1 = (y2-y1)/(x2-x1);k2 = (y4-y3)/(x4-x3);sol = [-k1 1;-k2 1]\[y1-k1*x1;y3-k2*x3]; x = sol(1);y = sol(2);endend效果图:。
利用matlab画中国地图的几种方法
>>bou1_4ly= [a(:).Y];%提取纬度信息
>>m_proj('Lambert Conformal Conic','lon',[70,140],'lat',[0,60])%选择投影方式
>>m_plot(bou1_4lx,bou1_4ly)%绘图
地绘制自己的数据。有兴趣的读者可以参阅它的使用说明。就在上述的网址上就有。但是m_是按照国家单个给出的,如果想画出世界各国的边界,就需要把每个国家的数据都下载下来,很麻烦。
网上有如何利用m_map来绘制行政边界的说明,例如下面的这个地址的作者就提供了一个具体的操作方法:将下载的.shp文
geoshow(h,land,'FaceColor',[0.5 0.7 0.5])
lakes=shaperead('worldlakes','UseGeoCoords',true);
geoshow(lakes,'FaceColor','blue')
rivers=shaperead('worldrivers','UseGeoCoords',true);
geoshow(rivers,'Color','blue')
cities=shaperead('worldcities','UseGeoCoords',true);
geoshow(cities,'Marker','.','Color','red')
matlab画图命令
Matlab画图命令介绍默认分类2009-07-17 21:08:09 阅读4151 评论0 字号:大中小这是matlab里最基本的命令,帮助那些没有学过matlab,只是用它来画画图的人。
登录|注册搜索| 帮助背着老板英语巧充电on my way...档案微博日志相册视频分享on my way...∙首页2010-01-25 | matlab画图subplot(3,2,3)plot(x)set(gca,'xtick',[1 3 6 8]);set(gca,'xticklabel',sprintf('%03.4f|',get(gca,'xtick'))) set(gca,'ytick',[2 4 5 7]);set(gca,'yticklabel',{'Two','Four','Five','Seven'});title('XY自定义间隔、精度及显示方式')subplot(3,2,4)plot(x)set(gca,'xminortick','on');%style 5set(gca,'ticklength',[0.05 0.025]);set(gca,'tickdir','out');title('XY坐标刻度显示方式')subplot(3,2,5)plot(x)set(gca,'xtick',[min(x) (max(x)+min(x))/2 max(x)]); set(gca,'ytick',[min(x) (max(x)+min(x))/2 max(x)]); title('论文中常用的标准3点式显示')x=20:10:20000;y=rand(size(x));subplot(3,2,6)semilogx(x,y);set(gca,'XLim',[20 20000]);set(gca,'XMinorTick','off');set(gca,'XTick',[20 31.5 63 125 250 500 1000 2000 4000 8000 16000]); set(gca,'XGrid','on');set(gca,'XMinorGrid','off');title('自定义网格显示')plot 建立向量或矩阵各队队向量的图形字元颜色字元图线型态loglog x、y轴都取对数标度建立图形y 黄色 . 点semilogx x轴用于对数标度,y轴线性标度绘制图形k 黑色o 圆semilogy y轴用于对数标度,x轴线性标度绘制图形w 白色x xtitle 给图形加标题b 蓝色+ +xlabel 给x轴加标记g 绿色* *ylabel 给y轴加标记r 红色- 实线text 在图形指定的位置上加文本字符串c 亮青色: 点线gtext 在鼠标的位置上加文本字符串m 锰紫色-. 点虚线grid 打开网格线-- 虚线hold on 命令用于在已画好的图形上添加新的图形1 x=0:0.001:10; % 0到10的1000个点(每隔0.001画一个点)的x座标y=sin(x); % 对应的y座标plot(x,y); % 绘图注:matlab画图实际上就是描点连线,因此如果点取得不密,画出来就成了折线图,请试验之2 Y=sin(10*x);plot(x,y,'r:',x,Y,'b') % 同时画两个函数3 若要改变颜色,在座标对后面加上相关字串即可:x=0:0.01:10;plot(x,sin(x),'r')4 若要同时改变颜色及图线型态(Line style),也是在坐标对后面加上相关字串即可:plot(x,sin(x),'r*')5 用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围axis([0,6,-1.5,1])6 MATLAB也可对图形加上各种注解与处理:(见上表)xlabel('x轴'); % x轴注解ylabel('y轴'); % y轴注解title('余弦函数'); % 图形标题legend('y = cos(x)'); % 图形注解gtext('y = cos(x)'); % 图形注解,用鼠标定位注解位置grid on; % 显示格线7画椭圆a = [0:pi/50:2*pi]'; %角度X = cos(a)*3; %参数方程Y = sin(a)*2;plot(X,Y);xlabel('x'), ylabel('y');title('椭圆')8 绘制函数在0 ≤ x ≤ 1时的曲线。
openGL大作业五星红旗
学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 ................................................ 错误!未定义书签。
1.4应用平台 ................................................ 错误!未定义书签。
2 详细设计 ....................................................... 错误!未定义书签。
2.1程序结构 ................................................ 错误!未定义书签。
2.2主要功能 (6)2.3函数实现 (6)2.4开发日志 (6)3 程序调试及运行 (7)3.1程序运行结果......................................... 错误!未定义书签。
3.2程序使用说明 (8)3.3程序开发总结 (8)4 附件(源程序) (9)1 摘要1.1 设计题目利用Opengl的知识,绘制一面五星红旗。
1.2 设计内容编写此程序实现绘制五星红旗。
2.1函数结构1.init 函数此函数实现了窗口背景和投影参数的初始设置void init (void){glClearColor(1.0,1.0,1.0,1.0); //窗口背景设置为白色glMatrixMode(GL_PROJECTION); //设置投影参数gluOrtho2D(0.0,200.0,0.0,150.0);}2.TRIANGLE 函数此函数实现了图形中各个关键点的坐标输入,使图像有基本框架void TRIANGLE(float i,float j,int r){ float PI = 3.14;f loat ax,ay,bx,by,cx,cy,dx,dy,ex,ey;ax=0;ay=r;bx=r*cos(18*PI/180);by=r*sin(18*PI/180);ex=-bx;ey=by;cx=r*sin(36*PI/180);cy=-r*cos(36*PI/180);dx=-cx;dy=cy;glColor3f(1.0,1.0,0.0);glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+ax,j+ay);glVertex2i(i+dx,j+dy);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+ax,j+ay);glVertex2i(i+cx,j+cy);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+bx,j+by);glVertex2i(i+ex,j+ey);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+bx,j+by);glVertex2i(i+dx,j+dy);glEnd();glBegin(GL_TRIANGLES);glVertex2i(i,j);glVertex2i(i+cx,j+cy);glVertex2i(i+ex,j+ey);glEnd();}3. flagSegment 函数此函数实现了对图形颜色的渲染,函数如下:void flagSegment(void){ glMatrixMode(GL_MODELVIEW);glLoadIdentity();glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glColor3f(1.0,0.0,0.0); //颜色为红色glBegin(GL_QUADS);glVertex2i(13,140);glVertex2i(100,140);glVertex2i(100,80);glVertex2i(13,80);glEnd();TRIANGLE(28,123,9);glTranslatef(40.0f,135.0f,0.0f);glPushMatrix();glRotatef(-30.0f,0.0f,0.0f,1.0f);TRIANGLE(0,0,4);glPopMatrix();glTranslatef(7.0f,-7.0f,0.0f);glPushMatrix();glRotatef(30.0f,0.0f,0.0f,1.0f);TRIANGLE(0,0,4);glPopMatrix();glTranslatef(0.0f,-10.0f,0.0f);TRIANGLE(0,0,4);glTranslatef(-7.0f,-6.0f,0.0f);glPushMatrix();glRotatef(-30.0f,0.0f,0.0f,1.0f);TRIANGLE(0,0,4);glPopMatrix();glFlush(); //渲染}4.main函数这个函数是此程序的主函数, glutInit完成初始化GLUT,glutInitDisplayMode完成显示模式设置,glut InitDisplayMode完成左上角位置设置,glut IntWindowSize 完成窗口的长和高。
非常强大matlab入门作图教程
在MATLAB中用图形函数绘图的一般操作步骤分 为7步,如表所示,下面以绘制一个简单三角函数 的图形为例,详细介绍各个步骤。
非常强大matlab入门作图教程
Matlab 绘图步骤
【例】用图形表示
ycox ssix n , x [ , ]
22
(1)准备图形数据
图形是数据变换规律和相互联系的形象显示,所以 数据输入是图形创建的基础,我们需要选定数据的范围, 选择对应范围的自变量,计算相应的函数值。本例中, 我们需在命令窗口输入如下代码:
程序如下: >>x=0:pi/100:2*pi; >>y1=0.2*exp(-0.5*x).*cos(4*pi*x); >>y2=2*exp(-0.5*x).*cos(pi*x); >>plotyy(x,y1,x,y2);
非常强大matlab入门作图教程
图形的属性
点和线的基本属性
plot(x,y,string)
非常强大matlab入门作图教程
Matlab 绘图
Matlab 作图
给出离散点列: x=[0:pi/10:2*pi] 计算函数值: y=sin(x) 画图:matlab 二维绘图命令 plot 作出函数图形
plot(x,y)
例:>> x=[0:pi/10:2*pi];
>> y=sin(x); >> plot(x,y);
>>x = -pi/2:.1:pi/2;
>>y=cos(x)-sin(x);
非常强大matlab入门作图教程
Matlab 绘图步骤
(2)选择图形的显示位置
21.turtle-绘制红旗
函数使用
我们绘制国旗,可以根据功能来定义函数: ①画笔移动
②画国旗背景
③画五角星
编程工具
• 我们使用腾讯扣叮的python实验室进行在线编程或者离线编程。
编程讲解
1、我们用过Turtle的都知道,画笔是需要抬手和落笔的。这一点一定要理 解,因为计算机是很死板的,你的每一个动作都必须告诉他,包括GC。
所以你的画笔一旦落下,经过的每一处都会留下字迹。如果希望隔开一段 距离就需要经过「抬笔」->「移动画笔」->「落笔」。 所以我们先把这个动作封装成一个函数:
编程讲解
2、接下来定义五角星函数,x,y变量代表移动到的坐标,d代表画笔的长 度。
颜色填充
- turtle.fillcolor
返回或设置填充颜色
中文名称 白色 黄色 洋红 青色 蓝色 黑色
英文名称 seashell
gold pink brown purple tomato
常用RGB色彩
RGB整数值 255, 245, 238
255, 215, 0 255, 192, 203
165, 42, 42 160, 32, 240 255, 99, 71
- turtle.hideturtle() 别名turtle.st()
使海龟可见
课后思考:
6、我们完成学习了函数的参数设置之后,我们是否可以调整函数的参数来修 改4和小五星的位置和角度呢。
总结
介绍函数中常见的位置参数、默认参数和不定长参数:
1、需要强调的是,即便是没有参数,我们在调用函数的时候也不能省略括号 ,如此例中的main()。 2、当有多个参数的时候,我们就必须按照顺序和数量传递,这也是最常见的 参数类型。
- turtle.begin_fill() 在绘制要填充的形状之前调用。要配 合turtle.end_fill()使用。
opengl绘制五星红旗
opengl绘制五星红旗本⽂实例为⼤家分享了opengl绘制五星红旗的具体代码,供⼤家参考,具体内容如下主要仪器设备VisualStudio C++2015Windows 10环境opengl库操作步骤1.五星红旗的各项参数1) 旗⾯为红⾊,长⽅形,长与⾼之⽐为3:2。
2) 五星的位置参数:·为便于确定五星之位置,先将旗⾯对分为四个相等的长⽅形,将左上⽅之长⽅形上下划为⼗等分,左右划为⼗五等分。
如下图所⽰:·⼤五⾓星的中⼼点,在该长⽅形上五下五、左五右⼗之处。
其画法为:以此点为圆⼼,以三等分为半径作⼀圆。
在此圆周上,定出五个等距离的点,其⼀点须位于圆之正上⽅。
然后将此五点中各相隔的两点相联,使各成⼀直线。
此五直线所构成之外轮廓线,即为所需之⼤五⾓星。
五⾓星之⼀个⾓尖正向上⽅。
·四颗⼩五⾓星的中⼼点,第⼀点在该长⽅形上⼆下⼋、左⼗右五之处,第⼆点在上四下六、左⼗⼆右三之处,第三点在上七下三、左⼗⼆右三之处,第四点在上九下⼀、左⼗右五之处。
其画法为:以以上四点为圆⼼,各以⼀等分为半径,分别作四个圆。
在每个圆上各定出五个等距离的点,其中均须各有⼀点位于⼤五⾓星中⼼点与以上四个圆⼼的各联结线上。
然后⽤构成⼤五⾓星的同样⽅法,构成⼩五⾓星。
此四颗⼩五⾓星均各有⼀个⾓尖正对⼤五⾓星的中⼼点。
2.绘制⼤五⾓星因为glut⽆法根据顶点绘制凹多边形,我只能将图形拆解,分步绘制。
我采⽤的⽅式是将五⾓星分解为10个三⾓形,共⽤五⾓星中⼼点作为顶点,这样就可以使⽤GL_TRIANGLE_FAN(连接成扇形的三⾓形系列)⼏何图元类型进⾏填充。
对于每⼀个五⾓星,我们必须知道的参数只有两个,中⼼点和⼀个外顶点。
注意到,在连续绘制三⾓形的过程中,重点是根据A点求得B点坐标或者反之,那么根据正弦定理,我们可以求得b边的长度,根据BC边的与x轴的夹⾓以及36°⾓,我们可以得到A点的坐标。
进⽽可以得到每⼀个三⾓形另外两点的坐标,⼀个五⾓星就绘制完成了。
Matlab绘图技巧与实例
Matlab绘图技巧与实例绘图在科学和工程领域中起着重要的作用,而Matlab作为一种功能强大的数学软件,具有丰富的绘图功能。
本文将介绍一些Matlab的绘图技巧,并通过一些实例来展示其用法和优势。
一、基本的绘图命令Matlab提供了一系列用于绘图的基本函数,最常用的是plot和scatter。
plot函数用于绘制曲线图,而scatter函数则用于绘制散点图。
这两个函数都可以接受多组数据,并且具有丰富的参数设置,可以对图形进行自定义。
例如,我们可以设置线条的颜色、线型和线宽,还可以添加标签和图例等。
二、特殊图形的绘制除了常见的曲线图和散点图外,Matlab还可以绘制一些特殊的图形,如柱状图、饼图和雷达图等。
这些图形可以用于展示不同类型的数据,从而更直观地呈现结果。
例如,柱状图可以用于比较不同组的数据,饼图则可以用于显示百分比等。
在绘制这些特殊图形时,Matlab提供了相应的函数,如bar、pie和polar等,使用这些函数可以轻松实现各种图形的绘制。
三、绘制3D图形Matlab还支持绘制3D图形,通过将数据在三维坐标系中表示,可以更全面地展示数据的分布和关系。
Matlab提供了许多用于绘制3D图形的函数,如plot3、scatter3和surf等。
使用这些函数可以绘制出各种复杂的3D图形,如曲面图、散点云和体积渲染等。
在绘制3D图形时,我们可以设置视角、光照和颜色等参数,从而使图形更加生动逼真。
四、图形的美化与字体设置除了绘图功能外,Matlab还提供了一些功能用于美化图形和设置字体。
通过设置标签和标题的字体、大小和颜色等,可以让图形更加清晰和美观。
此外,Matlab 还支持设置坐标轴的刻度、标签和范围,以及图形的背景颜色和边框样式等。
这些设置可以提高图形的可读性和视觉效果,从而更好地传达数据和结果。
五、图形的输出与保存Matlab不仅可以在软件中生成图形,还可以将图形输出为不同的格式,如图片文件和矢量图等。
精品课件-Python2、画国旗
• turtle.pencolor() #没有参数传入,返回当前画笔 颜色;传入参数设置画笔1颜色,可以是字符串如
画笔 • 绘图命令
1
画笔 • 绘图命令
2
画笔 • 绘图命令
2
画笔
• 绘圆命令详解 turtle.circle(radius, extent=None, steps=None) 描述: 以给定半径画圆 参数: radius(半径):半径为正(负),表示圆心在画笔的左边 (右边)画圆; extent(弧度) (optional); steps(optional):做半径为2 radius的圆的内切正多边
Success Words 目 录C o n t e n t s
第四部分 画国旗的基本原理
2
要点 • 搜索各国国旗图片,了解其设计理念和设计规则; • 导入turtle库,使用turtle的各种绘图指令根据国旗
规则进行绘制; • skids开发板板载屏幕大小为240x320,根据缩放比例
关系将绘制出的国旗在屏幕上完美地显示出来。
• 学生做好以后提问:能不能改进rect函数,加入右下 角的坐标作为参数
• def rect(x, y, color, x2, y2):
• width = x2 - x # 横坐标,右比左大
•
height = y - y2 # 纵3坐标,上比下大
法国国旗
import uturtle turtle = uturtle.Turtle() def rect(x, y, color, x2, y2):
虚③部的长复整数型等类。型示例 a = 3457475 b = 45555000 c=a+b print (a,b,c)
python绘制国旗的示例
python绘制国旗的⽰例国旗是⼀个国家的象征,它可以反映⼀个国家的特⾊和传统,国旗起源于近代的欧洲,是⼀个国家主权意识不断增强后的必然产物,本⽂我们使⽤ Python 来画⼏⾯国旗,使⽤的 Python 库是⼤家⽐较熟悉的 turtle。
五星红旗五星红旗是中华⼈民共和国的国旗,它是由四颗⼩的黄五⾓星环绕⼀颗⼤的黄五⾓星组成的,底⾊为红⾊,实现代码如下:turtle.setup(600,400,0,0)turtle.bgcolor("red")turtle.fillcolor("yellow")turtle.color('yellow')turtle.speed(10)# 主星turtle.begin_fill()turtle.up()turtle.goto(-280,100)turtle.down()for i in range (5):turtle.forward(150)turtle.right(144)turtle.end_fill()# 副星turtle.begin_fill()turtle.up()turtle.goto(-100,180)turtle.setheading(305)turtle.down()for i in range (5):turtle.forward(50)turtle.left(144)turtle.end_fill()turtle.begin_fill()turtle.up()turtle.goto(-50,110)turtle.setheading(30)turtle.down()for i in range (5):turtle.forward(50)turtle.right(144)turtle.end_fill()turtle.begin_fill()turtle.up()turtle.goto(-40,50)turtle.setheading(5)turtle.down()for i in range (5):turtle.forward(50)turtle.right(144)turtle.end_fill()turtle.begin_fill()turtle.up()turtle.goto(-100,10)turtle.setheading(300)turtle.down()for i in range (5):turtle.forward(50)turtle.left(144)turtle.end_fill()turtle.hideturtle()turtle.done()实现效果如下:青天⽩⽇旗青天⽩⽇旗是民国时期的国旗,旗⾯作蓝⾊以⽰青天,旗中置⼀射出叉光的⽩⽇图案,实现代码如下:t.colormode(255)rcblue=(4,0,174)rcred=(254,0,0)na = 15 / 180 * math.pi ol=2*r*math.cos(na) ol=int(round(ol))return oldef loop(r):t.fd(ol(r))t.right(150)def main0(a,b):t.color(rcred)t.penup()t.goto(-a/2,b/2)t.pendown()t.begin_fill()t.goto(-a/2,-b/2)t.goto(a/2,-b/2)t.goto(a/2,b/2)t.end_fill()t.penup()t.goto(-a/4,b/4)t.pendown()def main1(a1,b1):t.color('gray',rcblue)t.penup()t.right(90)t.fd(b1/2)t.left(90)t.pendown()t.begin_fill()t.fd(a1/2)t.left(90)t.fd(b1)t.left(90)t.fd(a1)t.left(90)t.fd(b1)t.left(90)t.fd(a1/2)t.end_fill()t.penup()t.goto(-a/4,b/4)t.seth(0)t.pendown()def main2(r):t.pensize = 20t.color('white', 'white') t.penup()t.fd(r)t.right(180 - 30 / 2)t.pendown()t.begin_fill()for i in range(12):loop(r)t.end_fill()t.penup()t.goto(-a/4,b/4)t.seth(0)t.pendown()def main3(r1,r2):t.color(rcblue, rcblue) t.begin_fill()t.up()t.right(90)t.fd(r1)t.left(90)t.pd()t.circle(r1)t.end_fill()t.penup()t.goto(-a/4,b/4)t.pendown()t.color('white', 'white') t.begin_fill()t.pu()t.right(90)t.fd(r2)t.pd()t.circle(r2)t.end_fill()t.penup()t.goto(-a/4,b/4)t.seth(0)t.pendown()def main(a,b):a1 = a / 2b1 = b / 2r = a1 / 4r2 = a1 / 8r1 = b1 * 17 / 80main0(a,b)main1(a1,b1)main2(r)main3(r1,r2)a=1020b=680t.setup(1100,700,100,0)实现效果如下:红底⽩⼗字旗红底⽩⼗字旗是瑞⼠的国旗,与其他国家有点不同,瑞⼠的国旗形状是正⽅形的,代表了该国坚守中⽴的政策,实现代码如下:def draw_crossshaped(aTurtle, width=0, height=0, color=None):aTurtle = turtle.Turtle()aTurtle.hideturtle()aTurtle.penup()aTurtle.goto(30, 50)aTurtle.begin_fill()aTurtle.fillcolor(color)for i in range(4):aTurtle.pendown()aTurtle.fd(width)aTurtle.rt(90)aTurtle.fd(height)aTurtle.rt(90)aTurtle.fd(width)aTurtle.lt(90)aTurtle.end_fill()def draw_RQ(times=20.0):width, height = 26 * times, 26 * timeswindow = turtle.Screen()aTurtle = turtle.Turtle()aTurtle.hideturtle()aTurtle.speed(10)aTurtle.penup()aTurtle.goto(-width / 2, height / 2)aTurtle.pendown()aTurtle.begin_fill()aTurtle.fillcolor('red')aTurtle.fd(width)aTurtle.right(90)aTurtle.fd(height)aTurtle.right(90)aTurtle.fd(width)aTurtle.right(90)aTurtle.fd(height)aTurtle.right(90)aTurtle.end_fill()draw_crossshaped(aTurtle, width=80, height=80, color='white')window.exitonclick()实现效果如下:星条旗星条旗是美国的国旗,由两部分组成,旗的左上⽅蓝底上排列着 50 颗⽩⾊的星,其余部分是 13 道红⽩相间的条⼦,实现代# 画条纹def drawSquar():turtle.color('black', 'red')turtle.begin_fill()for i in range(7):turtle.forward(600)turtle.left(90)turtle.forward(350 / 13)turtle.left(90)turtle.forward(600)turtle.right(90)turtle.forward(350 / 13)turtle.right(90)turtle.end_fill()# 画左上⾓的⼩矩形def drawSmallsqure():turtle.color('blue')turtle.begin_fill()turtle.left(90)turtle.forward(350 / 2)turtle.left(90)turtle.forward(300)turtle.left(90)turtle.forward(350 * 7 / 13)turtle.left(90)turtle.forward(300)turtle.end_fill()# 画左上⾓的星星def drawSrarts():x = -10y = 0for k in range(4):x = -15for i in range(6):turtle.goto(x, y)turtle.color('white')turtle.begin_fill()for j in range(5):turtle.left(144)turtle.forward(20)x -= 50turtle.end_fill()y += 350 / 13 * 2x = -10y = 350 / 13for i in range(3):x = -35for j in range(5):turtle.goto(x, y)turtle.color('white')turtle.begin_fill()for k in range(5):turtle.left(144)turtle.forward(20)x -= 50turtle.end_fill()y += 350 / 13 * 2turtle.setup(0.8, 0.8, -100, -100) turtle.speed(10)turtle.pu()turtle.forward(300)turtle.left(90)turtle.forward(350 / 2)turtle.left(90)drawSquar()turtle.home() drawSmallsqure()turtle.home()drawSrarts()turtle.hideturtle()turtle.done()实现效果如下:总结本⽂我们使⽤ Python 绘制了⼏⾯国旗,有兴趣的可以尝试绘制⼀下其他国家的国旗。
[整理]Matlab学习笔记--Matlab画图.
1.基本绘图函数:2.Matlab绘图步骤3.plot(x,y,s) s是字符串,不同的字符串代表不同的线型plot(x1,y1,s1,x2,y2,s2,…..)是将多个图形或函数曲线拼接放置在同一个图形框中。
函数曲线的颜色、线型和数据点型上面左边的b代表蓝色,-.代表点线型,就是x取的各点之间的连线为-.,而x取值的各个点的类型为空,就代表是默认的点型上面那个是r代表红色,--代表线型,而点型是*就是x取了多少个点,就多少个*,而*和*直接的连接为—上面的s里面的写法为:线型+颜色+点型线性为-.,颜色为k代表黑色,点型为h代表六角星型。
我们还可以不定义线性,为空,那么两个点之间就不连线了。
4.我们还可以定义曲线的颜色和线宽LineWidth:设定绘图曲线的粗细MarkerEdgeColor:数据点型或边界的颜色(圆形、菱形、六角星型等) MarkerFaceColor:数据点型的天聪颜色。
MarkerSize:数据点的大小从上可以看出:线型为--,颜色为r代表红色,点型为s代表方形,线的粗细为3,点标记的颜色为r代表红色,点标记的填充颜色为y代表黄色,点标记的大小为10.5.很多时候,需要在一张图上多次画多条曲线。
就需要hold函数:即图形保持命令,主要用于暂存当前的图形窗口,可以让用户继续在命令窗口中绘制其他函数图形,并且后续的图形曲线与当前窗口中的曲线在同一个图形界面中显示。
Hold函数不会因后面画的图形的坐标值不一样而改变当前坐标轴的定义范围。
Hold on函数:作用同上,但可以根据新的图形曲线的坐标轴极限值来自动调整当前坐标轴的坐标值。
Hold off函数:结束当前的图形保持状态,一般与Hold on匹配,hold off函数后就需要从新设置坐标轴的属性。
Hold All函数:保留当前的颜色和线型,这样在绘制后面的图形时就是用当前的颜色和线型。
这里x变换是从0—1我们通过hold on之后,就把后面的1—2的变换接上去了,效果很好。
用python中turtle模块绘制五星红旗
Turtle模块的坐标——绝对坐标
turtle.goto(x, y)
笔头向绝对坐标 (x,y)位置移动
Turtle模块的坐标——海龟坐标
turtle.right(90)
海龟向当前方向 顺时针移动90度
Y
1 五星红旗
(-300,200)
0,0
X
Turtle模块的局部绘图命令 t.fillcolor(“red”)设置填充颜色为红色
2 绘制国旗四边 导入turtle模块
抬起笔
移动到给定坐标
落下笔
开始填充颜色
填充颜色为红色
笔的颜色为红色
往前600像素距离划线 向右转90度 往前400像素距离划线 向右转90度 往前600像素距离划线 向右转90度 往前400像素距离划线 向右转90度 结束填充颜色
3 绘制大五角星
大五角星绝对坐标:
(-256,120)
大五角星尺寸角度:
(112、114)
抬起笔
移动到给定坐标
落下笔
开始填充颜色
填充பைடு நூலகம்色为黄色
笔的颜色为黄色
往前112像素距离划线 向右转144度 往前112像素距离划线 向右转144度 往前112像素距离划线 向右转144度 往前112像素距离划线 向右转144度 往前112像素距离划线 向右转144度 结束填充颜色
4 绘制小五角星
第一颗 第二颗 第三颗 第四颗 五角星 五角星 五角星 五角星
绝对 坐标
-96,182 -78,116
-78,66
-120,30
起笔 角度
260
30
3
330
尺寸 角度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
生成五角星顶点的子函数(GetPentagramVertices.m)function [x y] = GetPentagramVertices(centerPos, radius, orientation)% 子函数:获得五角星的十个顶点%orientation 定位Rad_ext = radius .* ones(1,5);%ones生成1行五列的矩阵,所有参数为1Ori_ext = ([0:72:359] + 90 +orientation).* pi/ 180;%[0:72:359]以72度为间隔产生五个数Rad_int = radius .* sind(18)./sind(126) .* ones(1,5);% sind(30)=0.5Ori_int = ([0:72:359] - 90 +orientation).* pi/ 180;Ori_int = Ori_int([4 5 1 2 3]);%强制换序Rad_all = zeros(1,10);Ori_all = zeros(1,10);Rad_all([1:2:10 2:2:10]) = [Rad_ext Rad_int];Ori_all([1:2:10 2:2:10]) = [Ori_ext Ori_int];[x y] = pol2cart(Ori_all, Rad_all);%pol2cart在MATLAB中,该函数用于把极坐标(柱坐标)转换为笛卡尔坐标(指平面直角坐标或空间直角坐标);把柱坐标(THETA,RHO,Z)转换为对应的三维笛卡尔坐标(X,Y,Z)。
x = x + centerPos(1);y = y + centerPos(2);程序是画静态的五星红旗,并将图像以'FiveStarRedFlag.png'保存在当前目录下。
这个五星红旗的比例是按照《中华人民共和国国旗制法说明》绘制的第一行是调整国旗分辨率的,可以自行修改,但是要保持3:2的比例。
flag_dimension_in_pixel = [600 400];figure_leftbottom_pos = [100 100];bkg_color = [1 0 0];star_color = [1 1 0];flag_horiz_units_num = 30;flag_verti_units_num = 20;star_vertices_x = zeros(10, 5);star_vertices_y = zeros(10, 5);stars(5).center_pos = [];stars(1).center_pos = [5 15];stars(1).radius = 3;stars(1).orientation = 0;stars(2).center_pos = [10 18];stars(2).radius = 1;stars(2).orientation = 0;stars(3).center_pos = [12 16];stars(3).radius = 1;stars(3).orientation = 0;stars(4).center_pos = [12 13];stars(4).radius = 1;stars(4).orientation = 0;stars(5).center_pos = [10 11];stars(5).radius = 1;stars(5).orientation = 0;%类似于c#的自定义函数调用?for i = 2:5dists = deal(stars(i).center_pos - stars(1).center_pos);stars(i).orientation = atan(dists(2)/dists(1)).*180/pi + 90;end%% Prepare the backgroundflag_figure = figure('Units', 'pixels', ...'Position', [figure_leftbottom_pos, flag_dimension_in_pixel]);flag_axes = axes('Parent', flag_figure, 'Units','pixels', ...'Position', [1 1 flag_dimension_in_pixel], 'Color', [1 0 0]);set(flag_axes, 'XLim', [0 flag_horiz_units_num], 'YLim', [0 flag_verti_units_num]);rectangle('Position', [0 0 flag_horiz_units_num flag_verti_units_num], ...'FaceColor', bkg_color ,'EdgeColor' ,bkg_color);set(flag_axes, 'Visible','off');%% Get the Star's Verticesfor i = 1:5[star_vertices_x(:,i) star_vertices_y(:, i)] = ...GetPentagramVertices(stars(i).center_pos, ...stars(i).radius,stars(i).orientation);endstar_handles = patch(star_vertices_x, star_vertices_y, star_color);set(star_handles, 'EdgeColor', star_color);flag_image = frame2im(getframe(flag_figure));imwrite(flag_image, 'FiveStarRedFlag.png');% 如装有Image Processing Toolbox的话,解注下面几行可以保存图形文件%% [filename, pathname, filterindex] = ...% uiputfile('*','Save the Nation Flag as...')%% imwrite(flag_image, [pathname filename]);主程序程序是飘扬的五星红旗,效果是3D实时渲染出来的,所以速度有点慢,机器够牛的同学可以试着将第一行的分辨率改大flag_size = [600 400]; % Change as you see fitflag_dimension_in_pixel = flag_size; %[600 400];figure_leftbottom_pos = [100 100];bkg_color = [1 0 0];star_color = [1 1 0];flag_horiz_units_num = 30;flag_verti_units_num = 20;star_vertices_x = zeros(10, 5);star_vertices_y = zeros(10, 5);stars(5).center_pos = [];stars(1).center_pos = [5 15];stars(1).radius = 3;stars(1).orientation = 0;stars(2).center_pos = [10 18];stars(2).radius = 1;stars(2).orientation = 0;stars(3).center_pos = [12 16];stars(3).radius = 1;stars(3).orientation = 0;stars(4).center_pos = [12 13];stars(4).radius = 1;stars(4).orientation = 0;stars(5).center_pos = [10 11];stars(5).radius = 1;stars(5).orientation = 0;for i = 2:5dists = deal(stars(i).center_pos - stars(1).center_pos);stars(i).orientation = atan(dists(2)/dists(1)).*180/pi + 90;end%% Prepare the backgroundflag_figure = figure('Units', 'pixels', ...'Position', [figure_leftbottom_pos, flag_dimension_in_pixel]);flag_axes = axes('Parent', flag_figure, 'Units','pixels', ...'Position', [1 1 flag_dimension_in_pixel], 'Color', [1 0 0]);set(flag_axes, 'XLim', [0 flag_horiz_units_num], 'YLim', [0 flag_verti_units_num]);rectangle('Position', [0 0 flag_horiz_units_num flag_verti_units_num], ...'FaceColor', bkg_color ,'EdgeColor' ,bkg_color);set(flag_axes, 'Visible','off');%% Get the Star's Verticesfor i = 1:5[star_vertices_x(:,i) star_vertices_y(:, i)] = ...GetPentagramVertices(stars(i).center_pos, ...stars(i).radius,stars(i).orientation);endstar_handles = patch(star_vertices_x, star_vertices_y, star_color);set(star_handles, 'EdgeColor', star_color);flag_texture = double(frame2im(getframe(flag_figure)))./255;%% Constantscycle = 2;cycle2 = 3;frames = 20;wave_length = flag_size(1)./cycle;wave_length2 = flag_size(2)./cycle2;rot_angle = 15.*pi/180;rot_angle2 = 5.*pi/180;amp1 = 1;amp2 = 0.5;flying_FSRF_RGBimages = uint8(zeros(flag_size(2), flag_size(1), 3, frames)); flying_FSRF_INDimages = uint8(zeros(flag_size(2), flag_size(1), 1, frames)); flying_FSRF_INDmap = zeros(256, 3, frames);GIF_filename = 'Flying_FSRF.gif';PNG_filename = 'Flying_FSRF.png';%% Main Program% flag_texture = paintFiveStarRedFlag(flag_size);flag_figure_handle = gcf;flag_size = size(flag_texture);[flag_xflag_y] = meshgrid(1:flag_size(2), 1:flag_size(1));for i = 1:framescla;flag_z = amp1.*sin((cos(rot_angle).*flag_x - sin(rot_angle).*flag_y).*2*pi./wave_length ...- 2*pi*(i-1)/frames) + ...amp2.*sin((cos(rot_angle2).*flag_x-sin(rot_angle2).*flag_y).*2*pi./wave_length2 ...- 2*pi*(i-1)/frames) + ...sin((cosd(20).*flag_x-sind(20).*flag_y).*2*pi./600 - 2*pi*(i-1)/frames);flag_surf_handle = warp(flag_x,flag_y,flag_z,flag_texture);view(2);set(flag_surf_handle, 'FaceLighting', 'phong','AmbientStrength', 0.7);set(gca, 'Visible', 'off', 'XLim', [1 600], 'YLim', [1 400], 'ZLim', [-3 3]);camproj('perspective')material dull% light_handle = camlight('right');l1 = light('Position', [600 200 1], 'Color', [1 1 1]);l2 = light('Position', [0, 0, 4], 'Color', [1 1 1]);flying_FSRF_frames(i) = getframe(flag_figure_handle);flying_FSRF_RGBimages(:,:,:,i) = flying_FSRF_frames(i).cdata;[current_INDimage currentMap] = rgb2ind(flying_FSRF_RGBimages(:,:,:,i), 256);if i==1imwrite(current_INDimage, currentMap,GIF_filename,...'GIF', 'LoopCount', inf, 'DelayTime', 0.05);imwrite(flying_FSRF_RGBimages(:,:,:,i),PNG_filename ,'PNG');elseimwrite(current_INDimage, currentMap,GIF_filename,...'GIF', 'WriteMode', 'Append', 'DelayTime', 0.05);endend主程序flag_size = [600 400]; % Change as you see fit flag_dimension_in_pixel = flag_size; %[600 400]; figure_leftbottom_pos = [100 100];bkg_color = [1 0 0];star_color = [1 1 0];flag_horiz_units_num = 30;flag_verti_units_num = 20;star_vertices_x = zeros(10, 5);star_vertices_y = zeros(10, 5);stars(5).center_pos = [];stars(1).center_pos = [5 15];stars(1).radius = 3;stars(1).orientation = 0;stars(2).center_pos = [10 18];stars(2).radius = 1;stars(2).orientation = 0;stars(3).center_pos = [12 16];stars(3).radius = 1;stars(3).orientation = 0;stars(4).center_pos = [12 13];stars(4).radius = 1;stars(4).orientation = 0;stars(5).center_pos = [10 11];stars(5).radius = 1;stars(5).orientation = 0;for i = 2:5dists = deal(stars(i).center_pos - stars(1).center_pos);stars(i).orientation = atan(dists(2)/dists(1)).*180/pi + 90;end%% Prepare the backgroundflag_figure = figure('Units', 'pixels', ...'Position', [figure_leftbottom_pos, flag_dimension_in_pixel]);flag_axes = axes('Parent', flag_figure, 'Units','pixels', ...'Position', [1 1 flag_dimension_in_pixel], 'Color', [1 0 0]);set(flag_axes, 'XLim', [0 flag_horiz_units_num], 'YLim', [0 flag_verti_units_num]);rectangle('Position', [0 0 flag_horiz_units_num flag_verti_units_num], ...'FaceColor', bkg_color ,'EdgeColor' ,bkg_color);set(flag_axes, 'Visible','off');%% Get the Star's Verticesfor i = 1:5[star_vertices_x(:,i) star_vertices_y(:, i)] = ...GetPentagramVertices(stars(i).center_pos, ...stars(i).radius,stars(i).orientation);endstar_handles = patch(star_vertices_x, star_vertices_y, star_color);set(star_handles, 'EdgeColor', star_color);flag_texture = double(frame2im(getframe(flag_figure)))./255;%% Constantscycle = 2;cycle2 = 3;frames = 20;wave_length = flag_size(1)./cycle;wave_length2 = flag_size(2)./cycle2;rot_angle = 15.*pi/180;rot_angle2 = 5.*pi/180;amp1 = 1;amp2 = 0.5;flying_FSRF_RGBimages = uint8(zeros(flag_size(2), flag_size(1), 3, frames)); flying_FSRF_INDimages = uint8(zeros(flag_size(2), flag_size(1), 1, frames)); flying_FSRF_INDmap = zeros(256, 3, frames);GIF_filename = 'Flying_FSRF.gif';PNG_filename = 'Flying_FSRF.png';%% Main Program% flag_texture = paintFiveStarRedFlag(flag_size);flag_figure_handle = gcf;flag_size = size(flag_texture);[flag_xflag_y] = meshgrid(1:flag_size(2), 1:flag_size(1));for i = 1:framescla;flag_z = amp1.*sin((cos(rot_angle).*flag_x - sin(rot_angle).*flag_y).*2*pi./wave_length ...- 2*pi*(i-1)/frames) + ...amp2.*sin((cos(rot_angle2).*flag_x-sin(rot_angle2).*flag_y).*2*pi./wave_length2 ...- 2*pi*(i-1)/frames) + ...sin((cosd(20).*flag_x-sind(20).*flag_y).*2*pi./600 - 2*pi*(i-1)/frames);flag_surf_handle = warp(flag_x,flag_y,flag_z,flag_texture);%warp函数来实现纹理映射view(2);set(flag_surf_handle, 'FaceLighting', 'phong','AmbientStrength', 0.7);set(gca, 'Visible', 'off', 'XLim', [1 600], 'YLim', [1 400], 'ZLim', [-3 3]);camproj('perspective')material dull% light_handle = camlight('right');l1 = light('Position', [600 200 1], 'Color', [1 1 1]);l2 = light('Position', [0, 0, 4], 'Color', [1 1 1]);flying_FSRF_frames(i) = getframe(flag_figure_handle);flying_FSRF_RGBimages(:,:,:,i) = flying_FSRF_frames(i).cdata;[current_INDimage currentMap] = rgb2ind(flying_FSRF_RGBimages(:,:,:,i), 256);if i==1imwrite(current_INDimage, currentMap,GIF_filename,...'GIF', 'LoopCount', inf, 'DelayTime', 0.05);imwrite(flying_FSRF_RGBimages(:,:,:,i),PNG_filename ,'PNG');elseimwrite(current_INDimage, currentMap,GIF_filename,...'GIF', 'WriteMode', 'Append', 'DelayTime', 0.05);endend参考文献用MATLAB绘制五星红旗【带飘动效果】/thread-185600-1-1.html。