【Sutcliffe Pentagons】奇幻派的漂流

本文介绍了Sutcliffe Pentagons这一奇特的分形几何构造,通过绘制五边形并不断细分其边的中点,生成复杂的分形图案。作者使用Processing编程语言实现这一过程,探讨了如何计算顶点中点、延长线段以及调整支柱长度以创建变化。文章强调了在数字艺术中引入混沌和不可预测性的价值,认为编程不仅关乎效率和秩序,还能体现自然界的有机性和复杂性。
摘要由CSDN通过智能技术生成

我要做什么?

Sutcliffe Pentagons!一个奇异的分形怪咖——

绘制一个普通的五边形,然后找出其五边中每一边的中点并过这些点绘制垂直于此边的线段,而这些线段的末端则连接生成另一个五边形。我打个草图:
这里写图片描述

在这样做的同时,该形状的其余部分也最终被细分为更多的五边形。这意味着在每个五边形内有六个副五边形。在其中的每一个中,又有六个子五边形向下重复……

接着,怪咖出现了。


###我怎么做的?
Do you find yourself overly thrilled by the mathematics of this?

打开你的草图—— Processing, 开工吧!!!
####Step 1: Drawing a pentagon using rotation
画一个普通的五边形,你会怎么做?

我选用的是一种较通用的方式:

围绕屏幕中心旋转360度,并以特定角度推算顶点。例如,如果每72度绘制一个点,那我们就会得到一个五角形。

// 根类
class Root {
  PVector[] pointArr;  // 顶点的数组
  Branch rootBranch;

  Root() {
    pointArr = new PVector[sideNum]; // 五边形时,sideNum=5
    int count = 0;
    for (float i = 0; i<360; i+=360/sideNum) {
      float x = width/2 + (400 * cos(radians(i)));
      float y = height/2 + (400 * sin(radians(i)));
      if (count < sideNum) {  // 保证数组长度
        pointArr[count] = new PVector(x, y);
      }
      count++;
    }
    rootBranch = new Branch(0, pointArr);
  }

  void display() {
    stroke(strokeHue, 70, 100, 100);
    rootBranch.display();
  }
}

####Step 2: Functions to calculate the midpoints of a set of vertices
根发芽长成了枝丫。

我们需要一个枝丫类。枝丫从根那里得到生长的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值