sierpinski三角形的维数_谢宾斯基三角形的几种生成方法

简介

谢宾斯基三角形(Sierpinski triangle)是一种分形,由波兰数学家谢宾斯基在1915年提出。它是一种自相似集。

几种生成方法

方法一:去掉中心

取一个实心的三角形(多数用等边三角形)

连接三边中点,将它们分成4个小三角形

将正中间的三角形挖空

对其余三个小三角形重复操作1

取一个正方形或其它图形开始,用类似的方法,形状也和谢宾斯基三角形相似,例如:

取一个实心正方形

将它分成3个“品”字形的小正方形

将其余部分“挖空”

重复步骤1

方法二:Chaos Game

任取平面上三点,画出这三点

在平面上任取一点P

画出P与三角形其中任意一个顶点的连线的中点

重复2

这种方法简单暴力,但又极其优雅。

1 /程序名称:谢宾斯基(Sierpinski)三角形,也叫垫片2 //编译环境:Visual C++ 6.0,EasyX 2011惊蛰版3 //最后更新:2010-11-164 //5 #include

6 #include

7 #incl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java语言实现谢尔宾斯三角形的代码: ```java import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; public class SierpinskiTriangle extends JFrame { private static final long serialVersionUID = 1L; private int depth = 0; public SierpinskiTriangle(int depth) { super("Sierpinski Triangle"); setSize(600, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.depth = depth; } public void paint(Graphics g) { super.paint(g); int x1 = 300, y1 = 50, x2 = 50, y2 = 550, x3 = 550, y3 = 550; drawSierpinskiTriangle(g, depth, x1, y1, x2, y2, x3, y3); } private void drawSierpinskiTriangle(Graphics g, int depth, int x1, int y1, int x2, int y2, int x3, int y3) { if (depth == 0) { g.drawLine(x1, y1, x2, y2); g.drawLine(x2, y2, x3, y3); g.drawLine(x3, y3, x1, y1); } else { int x12 = (x1 + x2) / 2; int y12 = (y1 + y2) / 2; int x23 = (x2 + x3) / 2; int y23 = (y2 + y3) / 2; int x31 = (x3 + x1) / 2; int y31 = (y3 + y1) / 2; drawSierpinskiTriangle(g, depth - 1, x1, y1, x12, y12, x31, y31); drawSierpinskiTriangle(g, depth - 1, x12, y12, x2, y2, x23, y23); drawSierpinskiTriangle(g, depth - 1, x31, y31, x23, y23, x3, y3); } } public static void main(String[] args) { SierpinskiTriangle sierpinskiTriangle = new SierpinskiTriangle(5); sierpinskiTriangle.getContentPane().setBackground(Color.WHITE); sierpinskiTriangle.setVisible(true); } } ``` 这段代码使用Java的Swing库实现了谢尔宾斯三角形的绘制。在`paint`方法中,定义了三个点的坐标,然后调用`drawSierpinskiTriangle`方法进行绘制。`drawSierpinskiTriangle`方法使用递归的方式进行绘制,每次递归深度减1,直到深度为0时绘制三角形

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值