Kangaroo Bipartite

@DanielPiker, what is this Bipartite component used for?

1 Like

I originally wrote it as part of generating the freeform auxetic structures shown below (I’ll post some example files for these soon).
It’s like what the ‘checkerboard’ component does for faces, but for vertices instead.
It sorts the vertices of a graph into 2 sets so that no 2 from the same set are connected by an edge - this is possible for any quad mesh.
For the auxetics, these 2 sets become the clockwise/counter-clockwise tiles. I figured it might come in handy for other things in future though.

16 Likes

interesting

Hi Daniel,
Did you ever happen to post these examples somewhere? I’m interested in looking into this.

Hi @siemen

Sorry - I confess I forgot all about this.
Here’s one example:

bipartite_auxetic.gh (17.1 KB)

bipartite_00000

This works by using Kangaroo to make a quad mesh where the diagonals of each quad are perpendicular and equal length (aka orthodiagonal and equidiagonal). This means the Varignon parallelogram (formed by joining the edge midpoints) for each face becomes a square.
image
The vertex graph of a quad mesh is always bipartite, so the bipartite component can sort the vertices into 2 sets. Taking the spaces between the squares as the tiles, they can be rotated (in different directions depending on which set the vertex is in).
Because the gaps are rectangles the tiling can completely close up in either direction. When they are not just rectangles, but squares, the vertices also match up when it closes.

I’d been interested in these sorts of auxetic tilings for a long time, but it was some recent work (related to the Tokyo olympics logo) by Tomohiro Tachi’s group that made me see this particular condition on the shape of the gaps that allows it to close completely. It’s not exactly the same though - there they create the tilings using a fixed set of rhombi (which will always be orthodiagonal), whereas I’m starting from an arbitrary subdivided mesh and optimizing for the ortho/equidiagonal property.

4 Likes

Just turning off the EqualLength goal in that definition will give rectangular gaps instead of square, so the form t-junctions when they close up:

bipartiteB_00000

You can replace the starting mesh with a different quad topology. If the starting mesh is very distorted though you might need to add some more goals to guide it to a good solution.

5 Likes

Amazing, I’ll have a look at it. Thanks a lot!

This immediately makes me want to make something that uses this. As if I don’t have enough half finished projects already :slight_smile:

Crazy to see how understanding of auxetic tilings has grown, this is great !

This makes me think of this project we made a few time ago combining these researches with inflatables : Diodon-Activation-Vague2
(more (french) info and pictures there)

Your work (as well as Tomohiro Tachi’s group’s) opens the door to lots of more explorations !

5 Likes