一、分形之 迭代实现分形

本次的图形都是在之前的画图工具中实现的。

首先,还是和原来一样建立一个JButton元素组件,然后加上监听方法;再在public void mouseClicked(MouseEvent e) {}方法中实现图形;

        else if (s.equals("图形2")) {double x1 = 0, y1 = 0, x2 = 0, y2 = 0;double a = -2, b = -2, c = -1.2, d = 2;for (int n = 0; n <= 50000; n++) {g1.setColor(Color.green);g1.setStroke(C);/** 先算出值,然后再来画图; 画图时要注意,因为求出的值很小,所以需要扩大。* 而强制转型时应该是求出的值整体转也就是应该加上括号(x2 * 100 + 350), int m = (int)x2 ** 100 + 350 ,不加括号时是,X2转型之后,再乘以100,加上350,*/x2 = (Math.sin(a * y1) - Math.cos(b * x1));y2 = (Math.sin(c * x1) - Math.cos(d * y1));// int m = (int) (x2 * 100 + 350);(x2 * 100 + 350)整体强制转型;// int s = (int) (y2 * 100 + 350);这时是X2乘以100加上350得到的数再进行转型;// g.drawLine(m, s, m, s);g1.drawLine((int) (x2 * 100 + 300), (int) (y2 * 100 + 300), (int) (x2 * 100 + 300),(int) (y2 * 100 + 300));// 强制转型时,要注意加上括号,整体转型x1 = x2;y1 = y2;}

结果:

图形3:

 else if (s.equals("图形3")) {g1.setColor(Color.MAGENTA);g1.setStroke(C);double x1 = 0, y1 = 0, x2 = 0, y2 = 0;double a = 1.40, b = 1.56, c = 1.40, d = -6.56;for (int n = 0; n <= 60000; n++) {x2 = d * Math.sin(a * x1) - Math.sin(b * y1);y2 = c * Math.cos(a * x1) + Math.cos(b * y1);g1.drawLine((int) (x2 * 50 + 550), (int) (y2 * 50 + 300), (int) (x2 * 50 + 550), (int) (y2 * 50 + 300));// 乘以的数,控制大小,整体相加改变位置;x1 = x2;y1 = y2;}

结果:

图形四:

    else if (s.equals("图形4")) {g1.setColor(Color.BLUE);g1.setStroke(C);double a = 0.4, b = 1, c = 0;double x1 = 0, y1 = 0, x2 = 0, y2 = 0;for (int n = 0; n <= 60000; n++) {x2 = y1 - Math.signum(x1) * Math.sqrt(Math.abs(b * x1 - c));y2 = a - x1;g1.drawLine((int) (x2 * 150 + 500), (int) (y2 * 150 + 250), (int) (x2 * 150 + 500),(int) (y2 * 150 + 250));// 乘以的数,控制大小,整体相加改变位置;x1 = x2;y1 = y2;}}

结果:

图形五:

else if (s.equals("图形5")) {g1.setColor(Color.BLUE);g1.setStroke(C);int a = 1, b = 4, c = 60;double x1 = 0, y1 = 0, x2 = 0, y2 = 0;for (int n = 0; n <= 60000; n++) {x2 = y1 - Math.signum(x1) * Math.sqrt(Math.abs(b * x1 - c));y2 = a - x1;g1.drawLine((int) (x2 *3 + 600), (int) (y2*3  + 400), (int) (x2*3  + 600),(int) (y2*3 + 400));//注意画线的值;// 乘以的数,控制大小,整体相加改变位置;该图形的乘数不能太大,最好控制在0-5之间x1 = x2;y1 = y2;}}

结果:

总结:这几个分形图形还很容易的,不过要注意画图时取得的值,(应该在窗体内,xy都应该是正数,)

/**
* 窗体是以左上角为原点,窗体可见部分都是整数;也就是坐标轴的第一象限;
*/

本次用到的公式:都是在math方法中:

/**
* signum(double d):返回参数的符号函数;如果参数为 0,则返回 0;如果参数大于 0,则返回 1.0;如果参数小于 0,则返回 -1.0。
abs(double a):返回 double 值的绝对值。
sqrt(double a):返回正确舍入的 double 值的正平方根。
*/

转载于:https://www.cnblogs.com/hesi/p/5595019.html

分形与数据结构第二篇相关推荐

  1. 分形与数据结构第一篇(神奇的色子)

    一.任务: 能够实现这次的小图形,不得不说真的很开心.图形出来的瞬间真的很激动,之前的纠结,郁闷一扫而空.我想这就是程序的魅力吧. 这次的任务是 1.平面上随机选A,B,C三个点.再随机选一个点,记为 ...

  2. Redis入门第二篇【存储数据结构之string类型】

    tags: Redis title: Redis入门第二篇[存储数据结构之string类型] Redis存储的数据结构 Redis支持的数据结构有好几种: It supports data struc ...

  3. 焱老师带你学习MYSQL系列 第二篇 (MYSQL 数据结构)

    相关系列链接 焱老师带你学习MYSQL系列 第六篇 (MYSQL是如何实现锁的) 焱老师带你学习MYSQL系列 第五篇 (MYSQL事务隔离级别是如何实现的) 焱老师带你学习MYSQL系列 第四篇 ( ...

  4. elk 第二篇 , 为elk加入redis, 替换下beats(个人感觉不错2)

    为elk加入redis, 替换下beats 这是elk的第二篇文章 编译安装日志分析平台 elk + filebeat elk支持多种输入输出方法 ,本文章主要描述通过redis做队列中间件 ,缓解e ...

  5. [翻译]Go与C#的比较,第二篇:垃圾回收

    Go vs C#, part 2: Garbage Collection | by Alex Yakunin | ServiceTitan - Titan Tech | Medium 目录 译者注 什 ...

  6. EnjoyingSoft之Mule ESB开发教程第二篇:Mule ESB基本概念

    目录 1. 使用Anypoint Studio开发 2. Mule ESB Application Structure - Mule ESB应用程序结构 3. Mule ESB Application ...

  7. Go实现Raft第二篇:选举

    女主宣言 今天小编为大家分享一篇关于Golang实现Raft的文章,本篇文章为系列中的第二篇,对Raft中的选举机制进行介绍并使用go进行实现.希望能对大家有所帮助. PS:丰富的一线技术.多元化的表 ...

  8. 【2023】Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器——数组和集合 15.2 集合概述

    [2023]Kotlin教程 文章目录 [2023]Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器--数组和集合 15.2 集合概述 第二篇 面向对象与函数式编程 第15章 数据容 ...

  9. U3D_Shader编程(第二篇:基础夯实篇)

    <U3D_Shader编程> ##<U3D_Shader编程>发布说明: ++++Shader一个高大上的领域,不管怎么样,我来了. ++++立钻哥哥从2018年开始正式对Sh ...

最新文章

  1. 与流氓软件的一次艰苦“奋战”
  2. 使用PostMan测试文件上传接口
  3. 修改页面的title及js中文转码
  4. “网络实名制”的背后
  5. golang ide 简介
  6. 用Docker创建Nexus
  7. 调试css的新装备--IETester
  8. Spring MVC原理学习之how is return type handled
  9. ArcGIS编辑操作的常用快捷键一览表
  10. 数据结构(四)串的动态数组存储
  11. 怎么运行java虚拟机_Java代码如何运行在Java虚拟机中
  12. 白领体检异常率连年走高,这5本书教你怎样科学养生
  13. 收藏的一个关于C# ToString的方法集合
  14. 什么是Mac地址?什么是交换机? 涉及单工,半双工,双工模式
  15. 微信小程序使用代码切换底部导航
  16. datagrid嵌套使用ajax,关于easyui datagrid多层嵌套动态合并列的问题
  17. 利用CSkin组件设计漂亮的WinForm登录界面
  18. 阿里巴巴Java开发手册(黄山版)2022.2.3发布
  19. AAAI2021 | 在手机上实现19FPS实时的YOLObile目标检测,准确率超高
  20. 真正了解gets() fgets() getc() fgetc()的区别

热门文章

  1. 计算机控制系统的闭环复极点,计算机控制 第四章 2.ppt
  2. 斑马888t打印机墨盒安装_硒鼓?墨盒?究竟哪个才是打印机的“灵魂伴侣”?...
  3. bufferedreader读取中文乱码_python之pandas模块关于csv文件乱码问题解决
  4. java对xml解析_Java中对xml的解析
  5. java矩阵类_151-矩阵类
  6. 获取朋友圈照片_朋友圈可以发 30 秒视频啦!用微视这个新功能就能办到
  7. SPI 读取不同长度 寄存器_[读书笔记]《计算机科学速成课》—6 寄存器和内存
  8. 计算机主机箱前后都有什么,目前四种热门的主机机箱设计都有哪些优缺点?
  9. mysql重复记录大于十的数据库_面试官:在使用mysql数据库时,遇到重复数据怎么处理?...
  10. Java 产生随机数:Java 中产生随机数的方法及应用汇总