分型与迭代(谢尔宾斯基三角形)总结

2023-11-11 03:30

本文主要是介绍分型与迭代(谢尔宾斯基三角形)总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

7月6日 分型与迭代总结(谢尔宾斯基三角形)

 

        胡哥说,酷只要能画出一个点,就能画出这个世界。现在我对这句话深信不疑了。这几天,接触到了不少的漂亮的用代码“写”出的图片,我越来越觉得Java是个神奇的东西。

 

        前天我画出了一个镯子,昨天又画了几个细胞,觉得好有意思啊。昨天冥思苦想了半天,终于把胡哥让画的谢尔宾斯基三角形画出来了,尴尬好有成就感啊。
 
        开始时我弄错了要连线的点,导致画出的三角形只划分了中间的。后来我发现其实每个需要划分的三角形就是跟原先最大的三角形是一样的,我觉得我顿悟了递归的涵义啦啦啦酷

 

        下面是我的谢尔宾斯基三角形的代码。

这是Asanjiaoxxing类:

import java.awt.Dimension;
import java.awt.Graphics;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;//定义一个DrawFrame继承自JFramepublic class Asanjiaoxing extends JFrame{//设置全局变量Graphics g;JTextField jtf1,jtf2;private static final long serialVersionUID = 1L;//函数入口public static void main(String[] args) {//实例化一个DrawFrameAsanjiaoxing df = new Asanjiaoxing();		//调用UnitGui函数 df.UnitGui();		}		public void UnitGui(){//设置窗体的属性值this.setTitle("谢尔宾斯基三角形");this.setSize(new Dimension(600,500));this.setDefaultCloseOperation(3);this.setLocationRelativeTo(null);//实例化一个面板JPanel jp = new JPanel();//实例化一个标签对象JLabel jl1  = new JLabel("请输入边长:");jp.add(jl1);//实例化一个文本框JTextField jtf1 = new JTextField(5);jp.add(jtf1);this.jtf1 = jtf1;//实例化一个标签对象JLabel jl2  = new JLabel("请输入循环次数:");jp.add(jl2);//实例化一个文本框JTextField jtf2 = new JTextField(5);jp.add(jtf2);this.jtf2 = jtf2;this.add(jp);this.setVisible(true);this.g =this.getGraphics();MouseL ml = new MouseL(g,jtf1,jtf2);this.addMouseListener(ml);}}			

 这是监听器:

 

package zyf_0706;import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JTextField;public class MouseL implements MouseListener {Graphics g ;JTextField jtf1,jtf2;int count;public MouseL(Graphics g,JTextField jtf1,JTextField jtf2){this.g = g;this.jtf1 = jtf1;this.jtf2 = jtf2;}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stubint x1,y1,length,n;x1 = e.getX();y1 = e.getY();length = (int)Double.parseDouble(jtf1.getText());n = (int)Double.parseDouble(jtf2.getText());this.count=n;double x2,y2,x3,y3;int a1,b1,a2,b2,a3,b3;x2 = x1+length;y2 = y1;x3 = x1+length/2;y3 = y1-length/2*Math.sqrt(3);a1 = x1;a2 = (int)x2;a3 = (int)x3;b1 = y1;b2 = (int)y2;b3 = (int)y3;g.drawLine(a1,b1,a2,b2);g.drawLine(a1,b1,a3,b3);g.drawLine(a2,b2,a3,b3);draw(a1,b1,a2,b2,a3,b3,count);}//定义一个画三角形的方法public void draw(int x1,int y1,int x2,int y2,int x3,int y3,int count){int A1,B1,A2,B2,A3,B3;if(count>0){count--;			A1=(x1+x2)/2;A2=(x1+x3)/2;A3=(x2+x3)/2;B1=(y1+y2)/2;B2=(y1+y3)/2;B3=(y2+y3)/2;g.drawLine(A1,B1,A2,B2);g.drawLine(A1,B1,A3,B3);g.drawLine(A2,B2,A3,B3);this.draw(A1, B1, A2, B2, x1, y1,count);this.draw(A1, B1, x2, y2, A3, B3,count);this.draw(x3, y3, A2, B2, A3, B3,count);	}else{return;}}@Overridepublic void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseReleased(MouseEvent arg0) {// TODO Auto-generated method stub}}

 

下面是我画的几个:

 

这篇关于分型与迭代(谢尔宾斯基三角形)总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/387255

相关文章

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素