# Processing Geometry Suite

**URL:** <https://discourse.processing.org/t/processing-geometry-suite/29924>\
**Category:** Gallery\
**Created:** [May 6, 2021, 9:17pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924 "2021-05-06T21:17:57Z")\
**Posts on this page:** 15\
**Page:** 2

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [July 29, 2023, 6:30pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/21 "2023-07-29T18:30:12Z")

</div>

# 1.4.0 Update

I have just released [v1.4.0](https://github.com/micycle1/PGS/releases/tag/1.4.0) of PGS and I’m once again presenting some of the new functionality here:

![simplifyMesh.gif](https://github.com/micycle1/PGS/blob/master/resources/meshing/simplifyMesh.gif?raw=true) ![](https://github.com/micycle1/PGS/raw/master/resources/optimisation/visibility2.gif) ![](https://github.com/micycle1/PGS/raw/master/resources/optimisation/rectPack.gif) ![image](https://github.com/micycle1/PGS/raw/master/resources/pgs/rsfc.gif) ![image](https://github.com/micycle1/PGS/raw/master/resources/pgs/sponge1.png) ![image](https://github.com/micycle1/PGS/raw/master/resources/optimisation/lecs.gif) ![image](https://github.com/micycle1/PGS/raw/master/resources/meshing/smooth.gif) ![image](https://github.com/micycle1/PGS/raw/master/resources/morphology/ellipticFourierSmooth.gif)

---

<div class="post-metadata">

**Author:** ![discohead](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/discohead/32/18600_2.png) [@discohead](https://discourse.processing.org/u/discohead)\
**Post date:** [August 2, 2023, 10:54pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/22 "2023-08-02T22:54:13Z")

</div>

This library is incredible, thank you! Previous releases included a javadoc jar which I used to create a PGS docset for [Dash](https://kapeli.com/dash) via their [javadocset](https://github.com/Kapeli/javadocset) tool. Would it be possible to get the updated javadocs as well?

Thanks again!

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [August 3, 2023, 5:44pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/23 "2023-08-03T17:44:59Z")

</div>

Thanks!  
I’ve now added the javadoc jar to the release on Github.

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [January 17, 2025, 2:08pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/24 "2025-01-17T14:08:55Z")

</div>

# 2.0 Update

I’ve recently released 2.0, which takes the codebase to Java 17.

With the new update, PGS is now finally available on Processing’s contribution manager as “_Geometry Suite for Processing_”.

![image](https://github.com/user-attachments/assets/4da45ff8-8b67-4bdf-91de-589dbb518ed1)

A few examples of new features:

![thomas.gif](https://github.com/micycle1/PGS/blob/2.0/resources/point_set/thomas.gif?raw=true) ![](https://github.com/micycle1/PGS/raw/2.0/resources/voronoi/mwvd.gif) ![](https://github.com/micycle1/PGS/raw/2.0/resources/morphology/pinchWarp.gif) ![](https://github.com/micycle1/PGS/raw/2.0/resources/geometry_processing/linesOnExterior.gif)

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [October 4, 2025, 1:09pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/25 "2025-10-04T13:09:00Z")

</div>

## 2.1 Update

New features, and various enhancements and fixes. Available in contribution manager or Github.

![fpvd.gif](https://github.com/micycle1/PGS/blob/master/resources/voronoi/fpvd.gif?raw=true) ![overlapRegions.gif](https://github.com/micycle1/PGS/blob/master/resources/boolean/overlapRegions.gif?raw=true)

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/4/f/4f442fd1c974650e7a4fede20ea03d58555a5d04.jpeg) ![](https://github.com/micycle1/PGS/raw/master/resources/optimisation/spiralSort.gif)

---

<div class="post-metadata">

**Author:** ![hamoid](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hamoid/32/58_2.png) [@hamoid](https://discourse.processing.org/u/hamoid)\
**Post date:** [October 18, 2025, 2:25pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/26 "2025-10-18T14:25:36Z")

</div>

Hi hi 🙂 Thank you for PGS Michael! 🙂

I’ve been having fun with it from OPENRNDR and created things like this:

> **[aBe (@hamoid@genart.social)](https://genart.social/@hamoid/114321812972321461)**
>
> Attached: 1 image
> 
> The program no longer crashes and the fix was simpler than I thought. 
> 
> Instead of comparing rounded doubles (what a silly idea) I did the proper thing, which is abs(a - b) \< epsilon. A lot of times 🙂 Takes maybe half second to...

I’m writing because I just tried the Sponge feature and I’m getting unexpected results, and I’m not sure if I’m using it wrong, if something is wrong on the OPENRNDR side, or it’s something else.

 ![2025-10-18_16-07](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/a/f/af9d8a30abc6707d6c0f7ae75a15d92c303b6515.png)

Is it expected that `createSponge` returns a PShape of type `PShape.PATH` ? I was expecting it to have children for each hole…

Also… is this a good place to ask? Or better on GitHub?

Thanks!

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [October 18, 2025, 3:42pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/27 "2025-10-18T15:42:51Z")

</div>

Hey, please you’re using it!  
Github is generally better, but we can stay here for now.

The type and childcount are expected. Holes are defined via Processing contours. Might there be a PShape rendering issue with OPENRNDR that doesn’t properly account for Processing’s strange way of defining holes? ([i.e](https://github.com/micycle1/PGS/blob/c93cb28532b748a2b42a84dc8e4fe8f95d3987fb/src/main/java/micycle/pgs/PGS_Conversion.java#L1926))

This is what I get for those args (albeit a different width/height):

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/3/2/3281a56a13d2f92bc1c28c463616fa4cca46a383.png)

---

<div class="post-metadata">

**Author:** ![hamoid](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hamoid/32/58_2.png) [@hamoid](https://discourse.processing.org/u/hamoid)\
**Post date:** [October 19, 2025, 3:07pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/28 "2025-10-19T15:07:16Z")

</div>

Thank you for the useful link! Sounds like it will help me figure out the issue 🙏

Update:

 ![IFDP01-2025-10-19-18.06.49](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/2/7/27c8ac716216ffda132ea31a1d0921b13ab2ae2f.png)

The issue was in the conversion from `PShape` to `ShapeContour` 😌

---

<div class="post-metadata">

**Author:** ![hamoid](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hamoid/32/58_2.png) [@hamoid](https://discourse.processing.org/u/hamoid)\
**Post date:** [December 11, 2025, 5:37pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/29 "2025-12-11T17:37:23Z")

</div>

Hi! In the PGS readme in GitHub (down at the moment) I see an image labeled “Multiplicatively Weighted Voronoi”.

When I try this program:

```processing
import micycle.pgs.*;
import java.util.List;

PShape design;
void setup() {
  size(600, 600);
  List<PVector> points = PGS_PointSet.random(50.0, 50.0, width - 50.0, height - 50.0, 50);
  println(points.size());
  double[] bounds = { 30.0d, 30.0d, width - 30.0d, height - 30.0d };
  design = PGS_Voronoi.multiplicativelyWeightedVoronoi(points, bounds, true);
}
void draw() {
  background(0);
  shape(design);
}

```

it produces this image

 ![2025-12-11_18:33:12](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/f/f/ff0af5048b9109de6be8476a8ae09a25b2fd1736.png)

but it doesn’t have the nice curves I see in the readme:

![mwvd](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/d/1/d1bdd89c24cb3167e9c71586e3626372f42bdcdb.gif)

Do you have any curves to spare? 🙂

Thank you 🙂

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [December 12, 2025, 11:56am UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/30 "2025-12-12T11:56:14Z")

</div>

The MWVD uses the .z value of each point for the multiplicative weight of the site.

Since all your weights are equal (0), you effectively get a regular voronoi diagram.

(`PGS_PointSet.applyRandomWeights()` might be of use).

---

<div class="post-metadata">

**Author:** ![hamoid](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/hamoid/32/58_2.png) [@hamoid](https://discourse.processing.org/u/hamoid)\
**Post date:** [December 12, 2025, 12:02pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/31 "2025-12-12T12:02:19Z")

</div>

So simple! Thank you 😃

 ![2025-12-12_13:00:31](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/3/7/3727730fc81f80791bd6b9fa1a6e914c200a0e45.png)

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [December 17, 2025, 11:12pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/32 "2025-12-17T23:12:54Z")

</div>

It’s actually a rather effective technique to create organic looking tessellations, particularly in negative space:

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/8/5/8516175f37b1fdd5d22f64159afacd0f5f035b16.jpeg) ![image](https://canada1.discourse-cdn.com/flex036/uploads/processingfoundation1/original/3X/6/f/6f4b60ba5a38a45be47dd3bb6c6a1f87ede094e9.jpeg)

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [April 6, 2026, 5:57pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/33 "2026-04-06T17:57:14Z")

</div>

## 2.2 Update

[Many](https://github.com/micycle1/PGS/releases/tag/2.2) new features, enhancements and fixes. Available in contribution manager or Github.

![voronoiMorph](https://raw.githubusercontent.com/micycle1/PGS/2.2/resources/morphology/voronoiMorph.gif) ![softCells](https://github.com/micycle1/PGS/blob/2.2/resources/tiling/softCells.gif?raw=true)  
 ![powerDiagram](https://github.com/micycle1/PGS/blob/2.2/resources/voronoi/powerDiagram.gif?raw=true) ![manhattenVoronoi](https://github.com/micycle1/PGS/blob/2.2/resources/voronoi/manhattenVoronoi.gif?raw=true)

---

<div class="post-metadata">

**Author:** ![sableraph](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/sableraph/32/251_2.png) [@sableraph](https://discourse.processing.org/u/sableraph)\
**Post date:** [April 9, 2026, 12:26pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/34 "2026-04-09T12:26:14Z")

</div>

That’s an impressive list of new methods! Congratulations on the release.

Trying to run the examples, I did notice a few that didn’t seem to run in 2.2.

So far I had issues with:

`triangulate` → `The function pigmentMix(int, int, float) does not exist.`

and

`voronoiCutout` → `The function shapeIntersection(PShape, PShape) does not exist.`

I have not tried all of them so there might be more.

---

<div class="post-metadata">

**Author:** ![micycle](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/micycle/32/201_2.png) [@micycle](https://discourse.processing.org/u/micycle)\
**Post date:** [April 9, 2026, 8:42pm UTC](https://discourse.processing.org/t/processing-geometry-suite/29924/35 "2026-04-09T20:42:02Z")

</div>

Ah right, I did check that some examples were working and took that to be good enough, but clearly not enough.

I’ll amend those, thanks.

[Previous page](https://discourse.processing.org/t/processing-geometry-suite/29924.md?page=1)
