# I could use some help to reverse engineer this artwork :)

**URL:** <https://discourse.processing.org/t/i-could-use-some-help-to-reverse-engineer-this-artwork/32181>\
**Category:** Project Guidance\
**Created:** [September 10, 2021, 3:09pm UTC](https://discourse.processing.org/t/i-could-use-some-help-to-reverse-engineer-this-artwork/32181 "2021-09-10T15:09:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![goldorak](https://avatars.discourse-cdn.com/v4/letter/g/dec6dc/32.png) [@goldorak](https://discourse.processing.org/u/goldorak)\
**Post date:** [September 10, 2021, 3:09pm UTC](https://discourse.processing.org/t/i-could-use-some-help-to-reverse-engineer-this-artwork/32181/1 "2021-09-10T15:09:27Z")

</div>

Hello,  
I came across a couple of artworks that I really appreciate.  
I’m very intrigued by these results, and I’m absolutely struggling to reverse engineer the way it has been done.  
One of the most beautiful example I could come across has been made by Tyler Hobbs (see attached picture for illustration).

 ![Capture d’écran 2021-09-10 à 17.07.33](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/a/a9955a6cb77afd50682843e84d793fa445d40e5e.jpeg)

Would you have any suggestions about how this artwork has been built?

Thanks

---

<div class="post-metadata">

**Author:** ![micuat](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micuat/32/19407_2.png) [@micuat](https://discourse.processing.org/u/micuat)\
**Post date:** [September 10, 2021, 5:16pm UTC](https://discourse.processing.org/t/i-could-use-some-help-to-reverse-engineer-this-artwork/32181/2 "2021-09-10T17:16:36Z")

</div>

I like his work too! I would start with implementing a recursion to subdivide a circle

> **[Recursion](https://thecodingtrain.com/CodingChallenges/077-recursion.html)**
>
> In this coding challenge, I explore the concept of recursion to create fractal patterns in JavaScript HTML5 canvas with the p5.js library.

then perhaps you need to offset some of the polygons to make a falling effect. There are so many other effects in the image. He seems quite active on social media, so once you make some sketches, it may be a good idea to directly ask him for feedback 🙂

---

<div class="post-metadata">

**Author:** ![jeremydouglass](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/jeremydouglass/32/20_2.png) [@jeremydouglass](https://discourse.processing.org/u/jeremydouglass)\
**Post date:** [September 18, 2021, 6:30pm UTC](https://discourse.processing.org/t/i-could-use-some-help-to-reverse-engineer-this-artwork/32181/3 "2021-09-18T18:30:28Z")

</div>

A first approximation, “polygons subdividing a circle with some falling out” may communicate the concept of this piece, but just note that it isn’t a circle:

![Screen Shot 2021-09-18 at 11.11.00 AM](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/f/fedb5d2f67ac5567a9c0724c16958d8ad40e0775.png)

And they aren’t polygons:

![Screen Shot 2021-09-18 at 11.11.09 AM](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/d/d7d04a4faac9f546260822d3a1c0c266de1485e7.png)

![Screen Shot 2021-09-18 at 11.12.16 AM](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/2X/8/8c0bcc80cf62916321f4622905f37ef5cc501c1e.png)

Without investigating, my first guess would be that the subdivided-circle part uses something like Jared Tarbell’s [Substrate algorithm](https://discourse.processing.org/t/trying-to-understand-the-substrate-algorithm/3031), only for curves (e.g. Bezier clipping algorithm) instead of line segments. The pure white zone in the upper-right of the third image is the kind of artifact you might get from a process like substrate – where each segment is equally likely as a starting point, so it becomes increasingly unlikely that a large zone will be split as the segment population increases.

…it is possible that the model is actually triangle point data and that the curves (including partials) are a rendering technique on that data – so it could be recursively inscribing triangles in triangles rather than curves from curves. In that case the open lines could be a fancy way of sometimes rendering a triangle as broken. However, I suspect (?) that it is probably more like this [bezier rendering glitch](https://discourse.processing.org/t/bezier-glitch-in-certain-point-combinations/32169) – an artifact of a curve-based process.

As a guess about the second part – the pieces-falling-out part, not the subdivided-circle part – perhaps the code then adds “waterfall” zones of displaced shapes as an independent process. So those falling shapes aren’t created as normal subdivision fill operations with the segments then translated down rather than drawn in place. Instead, they are created _in addition_ to the subdivision fill. I’m guessing that based in part on the heavy black band in the center image being filled so high up. I don’t think that would happen if those shapes were only randomly displaced from the fill operations that we see, even if the horizontal zone was designated for extra filling. The pieces that fell out were never added, and that space can still be filled with new pieces. The things we see falling were never put it.

Simplified version (curve edition, not triangle edition):

- draw several rings of wobbly curves to approximate a circle. add them to curve set.
- main loop:
  - pick a random curve, and a point on that curve.
  - adding a subdivision curve to it – a wobbly triangle, or v, or curve segment – anchored within some bounds.
  - either
    - add it to the curve set and continue, or
    - don’t add it to the curve set, and displace it down by a random amount.
