当前位置: 首页 > news >正文

蕨型叶分形

目录

要点

基本语句

 EraseMode

习题

1 设置颜色

2 旋转蕨型叶图

3 枝干

4 塞平斯基三角形


要点


        蕨型叶是通过一个点的反复变换产生的,假设x是一个含有两个分量的向量,可以用来表示平面内的一个点,则可以用Ax+b的形式对其进行变换。


基本语句


 

 语句darkgreen=[0 2/3 0]设置深绿色的颜色变量,在matlab中用红绿蓝分量来表示颜色,这里将绿色分量设置为2/3,其余为0。

采用animatedline来绘制蕨型叶,h为蕨型叶图形的句柄。

function fern_ashgclf resetset(gcf,'color','white','menubar','none', ...'numbertitle','off','name','Fractal Fern')x = [.5; .5];h = animatedline('Marker', '.', 'LineStyle', 'none', 'Color', [0 2/3 0]);axis([-3 3 0 10])axis off  %不显示坐标轴,只显示叶子本身stop = uicontrol('style','toggle','string','stop', ...'background','white');drawnow %绘制p  = [ .85  .92  .99  1.00];A1 = [ .85  .04; -.04  .85];  b1 = [0; 1.6];A2 = [ .20 -.26;  .23  .22];  b2 = [0; 1.6];A3 = [-.15  .28;  .26  .24];  b3 = [0; .44];A4 = [  0    0 ;   0   .16];cnt = 1; %将计数器的初始值设置为1ticwhile ~get(stop,'value')r = rand;if r < p(1)x = A1*x + b1;elseif r < p(2)x = A2*x + b2;elseif r < p(3)x = A3*x + b3;elsex = A4*x;endaddpoints(h, x(1), x(2));drawnow %重新绘制图形cnt = cnt + 1; %生成新的点后计数器的数值自增1endt = toc; %读取秒表数据s = sprintf('%8.0f points in %6.3f seconds',cnt,t);text(-1.5,-0.5,s,'fontweight','bold');set(stop,'style','pushbutton','string','close','callback','close(gcf)')
end


 EraseMode


EraseMode 属性不再受支持,而且在以后的版本中会出错。

初始语句:

h = plot(x(1),x(2),'.');
darkgreen = [0 2/3 0];
set(h,'markersize',1,'color',darkgreen,'erasemode','none');

修改后:

h = animatedline('Marker', '.', 'LineStyle', 'none', 'Color', [0 2/3 0]);

习题


1 设置颜色

   在MATLAB中,颜色可以使用多种方式来表示,其中一种常用的方式是使用RGB(Red-Green-Blue)表示法。在RGB表示法中,每个颜色的红、绿、蓝三个分量的取值范围为0到1,表示颜色的深浅程度。

  

function fern_ashgclf resetset(gcf,'color','black','menubar','none', ...'numbertitle','off','name','Fractal Fern')x = [.5; .5];h = animatedline('Marker', '.', 'LineStyle', 'none', 'Color', [1 0.75 0.8]);axis([-3 3 0 10])axis offstop = uicontrol('style','toggle','string','stop', ...'background','black','ForegroundColor','white');drawnowp  = [ .85  .92  .99  1.00];A1 = [ .85  .04; -.04  .85];  b1 = [0; 1.6];A2 = [ .20 -.26;  .23  .22];  b2 = [0; 1.6];A3 = [-.15  .28;  .26  .24];  b3 = [0; .44];A4 = [  0    0 ;   0   .16];cnt = 1;ticwhile ~get(stop,'value')r = rand;if r < p(1)x = A1*x + b1;elseif r < p(2)x = A2*x + b2;elseif r < p(3)x = A3*x + b3;elsex = A4*x;endaddpoints(h, x(1), x(2));drawnowcnt = cnt + 1;endt = toc;s = sprintf('%8.0f points in %6.3f seconds',cnt,t);text(-1.5,-0.5,s,'fontweight','bold','Color','red');set(stop,'style','pushbutton','string','close','callback','close(gcf)')
end


2 旋转蕨型叶图

%修改坐标
addpoints(h, x(2), x(1));%修改标注位置
s = sprintf('%8.0f points in %6.3f seconds',cnt,t);
text(2.5,-2.9,s,'fontweight','bold','Color','red');


3 枝干

A4 = [0, 0; 0, 0.16];
%修改为
A4 = [0, 0; 0, 0.08];
%这将使得蕨型叶的枝干更加瘦长

蕨型叶的起始点均为(0,0)。


4 塞平斯基三角形

function sierpinski_triangle_ashgclf resetset(gcf, 'color', 'white', 'menubar', 'none', ...'numbertitle', 'off', 'name', 'Fractal Sierpinski Triangle')x = [.5; sqrt(3)/6];h = animatedline('Marker', '.', 'LineStyle', 'none', 'Color', [0 2/3 0]);axis([0 1 0 sqrt(3)/2])axis offstop = uicontrol('style', 'toggle', 'string', 'stop', ...'background', 'white');hold onplot([0, 1, 0.5, 0], [0, 0, sqrt(3)/2, 0], 'k-*'); % 绘制三角形的顶点drawnowA1 = [0.5, 0; 0, 0.5];  b1 = [0; 0];A2 = [0.5, 0; 0, 0.5];  b2 = [0.5; 0];A3 = [0.5, 0; 0, 0.5];  b3 = [0.25; sqrt(3)/4];cnt = 1;ticwhile ~get(stop, 'value')r = rand;if r <= 1/3x = A1 * x + b1;elseif r <= 2/3 & r>1/3x = A2 * x + b2;elsex = A3 * x + b3;endaddpoints(h, x(1), x(2));drawnowcnt = cnt + 1;endt = toc;s = sprintf('%8.0f points in %6.3f seconds', cnt, t);text(0.25, -0.05, s, 'fontweight', 'bold');set(stop, 'style', 'pushbutton', 'string', 'close', 'callback', 'close(gcf)')
end

http://www.lryc.cn/news/95749.html

相关文章:

  • DevOps系列文章之 Git知识大全
  • JVM理论(六)执行引擎--垃圾回收
  • 贪心算法重点内容
  • 基于深度学习的高精度交通信号灯检测系统(PyTorch+Pyside6+YOLOv5模型)
  • 【3D目标检测】DSVT-2023CVPR
  • 我在VScode学Python(Python函数,Python模块导入)
  • 【目标跟踪】1、基础知识
  • 33. 搜索旋转排序数组
  • 接口自动化测试要做什么?8个步骤讲的明明白白(小白也能看懂系列)
  • Flutter 自定义 虚线 分割线
  • Java毕业设计—爱宠医院管理系统设计与实现
  • AI时代带来的图片造假危机,该如何解决
  • 【动态规划】简单多状态
  • 科技资讯|苹果计划本月推出Vision Pro头显开发套件,电池有重大更新
  • k8s 将pod节点上的文件拷贝到本地
  • Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理
  • java篇 类的进阶0x02:方法重载
  • Android11 相机拍照权限,以及解决resolveActivity返回null
  • MAXENT模型的生物多样性教程
  • CISA学习笔记-第一章、信息系统审计过程
  • 回调函数的使用:案例一:c语言简单信号与槽机制。
  • python matplotlib库 设置字体字号等
  • 【MySQL】SQL性能分析 (七)
  • 超越想象的GPT医疗 20230723
  • 【N32L40X】学习笔记03-gpio输出库
  • WebClient,HTTP Interface远程调用阿里云API
  • 飞书ChatGPT机器人 – 打造智能问答助手实现无障碍交流
  • React、Vue框架如何实现组件更新,原理是什么?
  • 常见面试题之设计模式--策略模式
  • redis多key问题