Grasshopper

algorithmic modeling for Rhino

# K-Means Clustering

8 dimensional k-means clustering of ~16000 quadrilateral panels

Views: 546

### Related Videos

Comment

Comment by David Reeves on November 16, 2014 at 7:46am

No such luck I'm afraid. Reducing the number of dimensions seems like a promising approach though. I wonder if there's another way to do it that holds up...

Comment by Suryansh Chandra on November 15, 2014 at 8:13am

Nice.. !

Assuming the quads are planar, maybe its possible to shrink the dimensions to only 3: a perimeter and 2 diagonals. I'm not completely sure, but I think there's only 1 quad you can build from those.. and it eliminates the issue of rotation if you always use the longer diagonal first.

Comment by taz on November 11, 2014 at 1:51pm

Ah, I'm surprised you hadn't seen that before.  Man that thread covers a lot of ground! Anyway I ran out of fun time for that project and I didn't end up with a very robust solution.  The end goal (obviously) was flat panel families controlled by joint width parameters.  Edge conditions make things complicated.

Comment by David Reeves on November 11, 2014 at 2:11am

Hey Taz,

I don't know how I missed it at the time but I just found this monster thread on k-means from back in 2011. The idea of clustering during a physical relaxation is an interesting one. Did you guys wind up having any luck with it?

It seems especially approachable when the nearest mean is being calculated based on edge/diagonal lengths as each mean is essentially providing set of rest lengths to all the panels closest to it. I might have to take a crack at it.

Comment by taz on November 10, 2014 at 4:55pm

The tricky part (if I recall correctly) is to come up with a unique identifier for all possible geometric characteristics to use for sorting.  Even more fun for hexagons.

Comment by David Reeves on November 9, 2014 at 5:26am

After trying a few different approaches, I wound up using a combination of edge lengths and diagonal lengths. For each quad with vertices A,B,C,D the 8d data point looks like this:

(AB, AC, BC, BD, CD, CA, DA, DC)

Two of those diagonal lengths are obviously redundant but they allow you to simply shift the array to get at different rotational permutations. This makes the search for the nearest mean a bit more straightforward since, in the context of panel clustering, you'd need to consider all rotational permutations of each one.

Comment by David Rutten on November 9, 2014 at 1:58am
You can get to 8 if you use x, y, z, u, v, normalx, normaly and normalz. Not saying that's what he did, you can of course also come up with 8 mathematical mappings from any if the above mentioned properties to variables.
Comment by Mateusz Zwierzycki on November 8, 2014 at 7:17pm

8 dimensions ? X&Y for each vertex ?

by June Lee

by June Lee

by June Lee

by June Lee