




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
生成五角星顶点的子函数(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);主程序1 paintFSRF_script.m程序是画静态的五星红旗,并将图像以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:5 dists = deal(stars(i).center_pos - stars(1).center_pos); stars(i).orientation = atan(dists(2)/dists(1).*180/pi + 90; end % Prepare the background flag_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 Stars Vertices for i = 1:5 star_vertices_x(:, i) star_vertices_y(:, i) = . GetPentagramVertices(stars(i).center_pos, . stars(i).radius,stars(i).orientation); end star_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);主程序2 paintFlyingFSRF_script.m程序是飘扬的五星红旗,效果是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:5 dists = deal(stars(i).center_pos - stars(1).center_pos); stars(i).orientation = atan(dists(2)/dists(1).*180/pi + 90; end % Prepare the background flag_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 Stars Vertices for i = 1:5 star_vertices_x(:, i) star_vertices_y(:, i) = . GetPentagramVertices(stars(i).center_pos, . stars(i).radius,stars(i).orientation); end star_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_x flag_y = meshgrid(1:flag_size(2), 1:flag_size(1);for i = 1:frames cla;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=1 imwrite(current_INDimage, currentMap,GIF_filename,. GIF, LoopCount, inf, DelayTime, 0.05); imwrite(flying_FSRF_RGBimages(:,:,:,i),PNG_filename ,PNG);else imwrite(current_INDimage, currentMap,GIF_filename,. GIF, WriteMode, Append, DelayTime, 0.05);endend主程序3 paintFlyingFSRFQuick_script.mflag_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:5 dists = deal(stars(i).center_pos - stars(1).center_pos); stars(i).orientation = atan(dists(2)/dists(1).*180/pi + 90; end % Prepare the background flag_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 Stars Vertices for i = 1:5 star_vertices_x(:, i) star_vertices_y(:, i) = . GetPentagramVertices(stars(i).center_pos, . stars(i).radius,stars(i).orientation); end star_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_x flag_y = meshgrid(1:flag_size(2), 1:flag_size(1);for i = 1:frames cla;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(2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版监控系统维保合同范本
- 2024版单位车辆出租协议
- 2025年事业单位工勤技能-河北-河北水文勘测工四级(中级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河北-河北工程测量工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广西-广西家禽饲养员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西医技工一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广西-广西保健按摩师一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东动物检疫员五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东下水道养护工五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-安徽-安徽机械冷加工一级(高级技师)历年参考题库典型考点含答案解析
- 诱思探究理论
- 浅析中国保险业发展现状
- 铣床日常点检保养记录表
- 农产品贮藏与加工教案
- 04某污水处理厂630kW柔性支架光伏发电项目建议书
- 2022中国移动通信集团重庆限公司招聘上岸笔试历年难、易错点考题附带参考答案与详解
- 北师大版九年级数学上九年级第一二单元综合数学试题
- 二级建造师成绩复核申请
- GB/T 25702-2010复摆颚式破碎机颚板磨耗
- GB 29541-2013热泵热水机(器)能效限定值及能效等级
- 住宅项目实测实量操作指引(图文并茂)
评论
0/150
提交评论