谢尔宾斯基三角形

谢尔宾斯基三角形

在这里插入图片描述
用java去画这个谢尔宾斯基三角形首先我们先去画一个大的三角形,然后呢去找各边中点去进行连线,这样我们刚开始的思路就完成了,最后用递归(用方法去调用本身的方法)就好了。

 int x6 = 400,y6 = 200,d = 400; // 我们先找一个点 ,并赋予边长  。
 int n=10;// 循环次数
public void a(int n,int x6,int y6,int d) {
		
		if(n==0) {   // 递归一定要有一个结束语句。
			return;
		}
		double x7 = x6-d/2;   // 找到其他两个点
		double args = Math.sqrt(3)/2;
		double y7 = y6+args*d;
		double x8 = x6+d/2;
		double y8 = y6+args*d;
		//因绘制线段的方法需要整型作为参数故进行强制类型转换
				int x1f = (int)x7;
				int y1f = (int)y7;
				int x2f = (int)x8;
				int y2f = (int)y8;
				//绘制主三角形
				g2.drawLine(x6, y6, x2f, y2f);
				g2.drawLine(x6, y6, x1f, y1f);
				g2.drawLine(x1f,y1f,x2f,y2f);
				//三段线段的中点坐标
				int n1x = (x6+x1f)/2;
				int n1y = (y1f+y6)/2;
				int n2x = (x2f+x6)/2;
				int n2y = (y2f+y6)/2;
				int n3x = (x2f+x1f)/2;
				int n3y = y2f;
				//绘制下次递归挖去的三角形
				g2.drawLine(n1x, n1y, n2x, n2y);
				g2.drawLine(n2x, n2y, n3x, n3y);
				g2.drawLine(n1x, n1y, n3x, n3y);
				//递归调用绘制方法 递归层数减一 边长减半 以两个中点为新顶点
				a(n-1,n1x,n1y,d/2);
				a(n-1,n2x,n2y,d/2);
				a(n-1,x6,y6,d/2);
	  	
	 }

然后再把我们之前的窗口,监听器等加进去就好了 最后结果是这个样子的。
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真真最可爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值