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

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

相关文章

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 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果