很有趣的Java分形绘制
1 public void draw1(int x1, int y1, int x2, int y2,int depth) {//科赫曲线 keleyi.com 2 g.drawLine(x1, y1, x2, y2); 3 if (depth<=1) 4 return; 5 else {//得到三等分点 6 double x11 = (x1 * 2 + x2) / 3; 7 double y11 = (y1 * 2 + y2) / 3; 8 9 double x22 = (x1 + x2 * 2) / 3; 10 double y22 = (y1 + y2 * 2) / 3; 11 12 double x33 = (x11 + x22) / 2 - (y11 - y22) * Math.sqrt(3) / 2; 13 double y33 = (y11 + y22) / 2 - (x22 - x11) * Math.sqrt(3) / 2; 14 15 g.setColor(j.getBackground()); 16 g.drawLine((int) x1, (int) y1, (int) x2, (int) y2); 17 g.setColor(Color.black); 18 draw1((int) x1, (int) y1, (int) x11, (int) y11,depth-1); 19 draw1((int) x11, (int) y11, (int) x33, (int) y33,depth-1); 20 draw1((int) x22, (int) y22, (int) x2, (int) y2,depth-1); 21 draw1((int) x33, (int) y33, (int) x22, (int) y22,depth-1); 22 } 23 }
正方形:
1 public void draw2(int x1, int y1, int m,int depth) {//正方形 keleyi.com 2 g.fillRect(x1, y1, m, m); 3 m = m / 3; 4 if (depth<=1) 5 return; 6 else{ 7 double x11 = x1 - 2 * m; 8 double y11 = y1 - 2 * m; 9 10 double x22 = x1 + m; 11 double y22 = y1 - 2 * m; 12 13 double x33 = x1 + 4 * m; 14 double y33 = y1 - 2 * m; 15 16 double x44 = x1 - 2 * m; 17 double y44 = y1 + m; 18 19 double x55 = x1 + 4 * m; 20 double y55 = y1 + m; 21 22 double x66 = x1 - 2 * m; 23 double y66 = y1 + 4 * m; 24 25 double x77 = x1 + m; 26 double y77 = y1 + 4 * m; 27 28 double x88 = x1 + 4 * m; 29 double y88 = y1 + 4 * m; 30 31 draw2((int) x11, (int) y11, (int) m,depth-1); 32 33 draw2((int) x22, (int) y22, (int) m,depth-1); 34 35 draw2((int) x33, (int) y33, (int) m,depth-1); 36 37 draw2((int) x44, (int) y44, (int) m,depth-1); 38 39 draw2((int) x55, (int) y55, (int) m,depth-1); 40 41 draw2((int) x66, (int) y66, (int) m,depth-1); 42 43 draw2((int) x77, (int) y77, (int) m,depth-1); 44 45 draw2((int) x88, (int) y88, (int) m,depth-1); 46 } 47 48 }
谢冰斯基三角形:
1 public void draw3(int x1,int y1,int x2,int y2,int x3,int y3,int depth){//三角形 keleyi.com 2 3 double s = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); 4 g.drawLine(x1,y1,x2,y2); 5 g.drawLine(x2,y2,x3,y3); 6 g.drawLine(x1,y1,x3,y3); 7 // if(s<3) 8 // return; 9 if (depth<=1) 10 return; 11 else 12 { 13 /* 14 * 上面的三角形 15 */ 16 double x11=(x1*3+x2)/4; 17 double y11=y1-(s/4)*Math.sqrt(3); 18 19 double x12=(x1+x2*3)/4; 20 double y12=y11; 21 22 double x13=(x1+x2)/2; 23 double y13=y1; 24 25 /* 26 * 左边的三角形 27 */ 28 double x21=x1-s/4; 29 double y21=(y1+y3)/2; 30 31 double x22=x1+s/4; 32 double y22=y21; 33 34 double x23=x1; 35 double y23=y3; 36 37 /* 38 * 右边的三角形 39 */ 40 double x31=x2+s/4; 41 double y31=(y1+y3)/2; 42 43 double x32=x2-s/4; 44 double y32=y21; 45 46 double x33=x2; 47 double y33=y3; 48 49 50 draw3((int)x11,(int)y11,(int)x12,(int)y12, (int)x13, (int)y13, depth-1); 51 draw3((int)x21,(int)y21,(int)x22,(int)y22, (int)x23, (int)y23, depth-1); 52 draw3((int)x31,(int)y31,(int)x32,(int)y32, (int)x33, (int)y33, depth-1); 53 } 54 }
科赫曲线是一种外形像雪花的几何曲线,所以又称为雪花曲线,它是分形曲线中的一种,具体画法如下:
1、任意画一个正三角形,并把每一边三等分;
2、取三等分后的一边中间一段为边向外作正三角形,并把这“中间一段”擦掉;
3、重复上述两步,画出更小的三角形。
4、一直重复,直到无穷,所画出的曲线叫做科赫曲线。
小结:分形是个很好玩的东西,根据自己的奇妙想象可以画出很多很好看的图形,不仅仅是已经存在的,你可以创造出属于你自己的图形!
转载于:https://www.cnblogs.com/roucheng/p/3453047.html
很有趣的Java分形绘制相关推荐
- Java 注解 --很有趣的一篇文章
初学者可以看看,很有趣的文章,简单易懂,生动有趣. 原文链接:https://blog.csdn.net/briblue/article/details/73824058
- 史上最扯Java图形绘制(J2SE)之一JAVA动画效果
很多主一听说Java界面,一水的头大外带血压高,兄弟我倒觉得没什么必要. 其实Java这东西吧,就简便性和其初衷而言,真他妈就在GUI 这地界是有优势的,单就其2D界面开发的易用性 ...
- 使用Java编一个有意思的_一个有趣的Java编译问题
学员冯伟立今天中午问了我一个有趣的Java编译问题,我也无法给他解释,不知道有没有路过的高人能够解释清楚原因,望不吝赐教! 下面程序的main方法中的第二行代码和注释中的两行代码表达的意思完全相同,注 ...
- (转) 机器学习很有趣Part6:怎样使用深度学习进行语音识别
本文转自:http://www.jiqizhixin.com/article/2321 机器学习很有趣Part6:怎样使用深度学习进行语音识别 2017-02-19 13:20:47 机器学习 ...
- 爬虫技术做到哪些很酷很有趣很有用的事情
能利用爬虫技术做到哪些很酷很有趣很有用的事情? 准备学习python爬虫.各位大神都会用爬虫做哪些有趣的事情? 今天突然想玩玩爬虫,就提了这个问题.跟着YouTube上的一个tutor写了个简单的程序 ...
- 有趣的java 开发_开发人员历史中的五个有趣时刻
有趣的java 开发 我在整个开发环境中工作了30多年. 我开始共享一个实际上有门的办公室. 是的,那是很久以前了. 我从办公室到立方体再到开放空间. 我曾在大型团队,小型团队和许多中型团队中工作. ...
- 微软todo使用教程_Todo教程可能很有趣-但是,这是从头开始构建自己的项目的方法...
微软todo使用教程 There are many great tutorials that walk you through creating apps, from simple todo list ...
- 这是一张很有趣的图片, 通常女性会先看到月亮, 男性会先看到人脸. 如果相反, 表示你体内的异性荷尔蒙偏高哦!...
这是一张很有趣的图片, 通常女性会先看到月亮, 男性会先看到人脸. 如果相反, 表示你体内的异性荷尔蒙偏高哦! 四不像...
- 一个很艰难的 Java 核心面试问题!
一个很艰难的 Java 核心面试问题,这个 Java 问题也常被问: 什么是线程安全的单例,你怎么创建它. 好吧,在Java 5之前的版本, 使用双重检查锁定创建单例 Singleton 时,如果多个 ...
最新文章
- PCE:南农沈其荣团队根系分泌物驱动土壤-微生物-养分之间的反馈作用以响应植物的生长...
- 【EXLIBRIS】随笔记 001
- logrotate管理nginx日志文件
- 机器学习-吴恩达-笔记-8-支持向量机
- Fortran 语言学习(菜鸟都可以看得懂的入门级教程)(持续更新中ing...)
- C#常见操作类(一)
- 人工智能(7)---一文读懂人脸识别技术:商业应用、产品落地、核心技术、市场规模
- 还不重视!脸上有螨虫的几种表现?
- 万国数据二季度调整后EBITDA利润率43.5% 高于指引预测
- 裁剪图片 华为手机显示为圆
- Qt5.9问题解决 Clock skew detected. Your build may be incomplete,has modification time in the future
- Excel转格式数字转人民币大写
- 网易NEC命名规范笔记
- 【动态规划】字符串类型动态规划
- 3DMAX动画渲染 军舰在海中航行
- 字节小组长无意得知手下有35K,自己却只有28K;谷歌推出Go版Android 11;Deepin v20正式发布!...
- android打电话 接电话 挂电话流程分析
- 【设计模式-手写源码-附1】-简单工厂模式-基于魔兽争霸冰封王座
- pytz 的所有函数
- inno setup 中文乱码问题_Inno Setup添加中文安装语言文件
热门文章
- WindStyle ExifInfo for Windows Live Writer发布
- 择师论(怎么有效的向别人学习)
- GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥
- 彪马PUMA源代码被盗,称客户数据不受影响
- 这两个漏洞暴露 Facebook Group 成员,有个用手机就能发现,获奖$9000
- 奇安信代码安全实验室帮助微软修复两个 “重要” 漏洞,获官方致谢
- 近300个 Windows 10 可执行文件易受 DLL 劫持攻击
- 路径取值之含正则表达式的的取值方法
- No project is easy, am I right?
- Android本地应用程序应用方式介绍