# Twisted quads vs. Expressive quads

**URL:** <https://discourse.processing.org/t/twisted-quads-vs-expressive-quads/32292>\
**Category:** Coding Questions\
**Created:** [September 16, 2021, 9:47pm UTC](https://discourse.processing.org/t/twisted-quads-vs-expressive-quads/32292 "2021-09-16T21:47:25Z")\
**Posts on this page:** 1\
**Showing post:** 3

<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 17, 2021, 6:33pm UTC](https://discourse.processing.org/t/twisted-quads-vs-expressive-quads/32292/3 "2021-09-17T18:33:18Z")

</div>

As discussed in your previous post

> [@Polygons Distribution with loops](https://discourse.processing.org/t/polygons-distribution-with-loops/32270/6):
>
> Let’s save the coordinates of a little square: float[] coords = new float[] { -10, -10, // x1, y1 10, -10, // x2, y2 10, 10, // x3, y2 -10, 10 // y4, y4 }; Think of it like a metal mold or template for pouring a little rubber stamp. We can make the stamp and use it all at once by passing the coordinates to [beginShape()](https://processing.org/reference/beginShape_.html) or beginShape(QUADS). Here is a stamp method to do that: void stamp(float[] coords) { beginShape(); for(int i=0; i\<coords.length; i+=2) { // read two numbers e…

there are multiple ways to add randomness to a set of points that are not twisted. If you are growing out in four quadrant directions, you won’t give you every possible random quad – but it has a lot of variation, but concave shapes will be quite rare.

One way to get more frequent and “expressive” concave shapes is to do random points (or a random walk of points) and test for line-line intersection to detect invalid crossings.

---

_[View the full topic](https://discourse.processing.org/t/twisted-quads-vs-expressive-quads/32292)._
