Grasshopper

algorithmic modeling for Rhino

How to differentiate optically different face geometries, that have the same m²-value?

I have 2 breps:

Both have the same volume. The face is just extruded by the same value.

I need a value that I can get from their breps/faces to differentiate those two. I already tried their volume which obviously doesn't work, because it's the same. I also had the idea of taking their "surface-area-to-volume ratio" but it did not work either. 

I'm not sure if there is a way to compare their faces optically?!

At the end when I take more than 2 faces, it would be great to have a list of numbers I could compare with each other, to remove duplicates and have a list length that tells me how many optically different faces I have.

I hope you have some ideas. Thanks.

Views: 952

Replies to This Discussion

If they don't have any curved edges you can check if both polygons are congruent. This is, if the edges have the same length and the interior angles are the same.

The only problem is that symmetrical polygons are also congruent, which you might want to differentiate.

You can look at the latest version of kangaroo, that has options to keep the area the same. In you case I would still have no idea what you would give as degrees of freedom. (Seems more like a design question / problem than an automation problem in that regard)

'optically'?

The following information can be easily extracted from breps through code:

Topological properties

  • Closedness
  • Face count
  • Edge count
  • Vertex count
  • Vertex valence
  • Face loop counts
  • Face trim counts

Geometrical properties

  • Area and Area centroid
  • Volume and Volume centroid
  • Areas of all faces
  • Lengths of all edges/loops
  • Locations of all vertices
  • Bounding box (position, volume, etc.)

There's probably a few more I forgot.

If you want to compare two breps that are supposed to be in the same location you can fairly easily match up vertices, edges and faces, but if the breps can be transformed, it becomes much harder to compare (add several hundred to several thousand lines of code and a significant runtime increase unless your code is really optimized).

Which of the above properties would you like access to?

With 'optically' I mean, we can see that those (in that project) stones look different, they have different geometries. But I have no clue how to tell grasshopper that they look different. 

At the picture below you can see, that the end product is a brick wall. With galapagos i want to differenciate and choose how many different stones i have/want (in specific aesthetic cases). therefor i need values i can compare with eachother. with 'delete consecutive' and list length i would come to a result. But every values i tried yet, were not characteristic for each of the different looks. 

After your answer I thought about setting a boundry box around every stone and compare the locations of all vertices in relation to their boxes with all the other stones vertices locations. but i still have no idea how i would build that up.

I also think that igual but mirrored stones would be handled like different stones. But they should be handled the same. 

I tried the surface-area but the values seem to be to complicated to compare them. for the picture here with 18 stones. Galapagos can not reach the same stone for the entire wall. Stones are created by a grid. within the grid, points can be moved one position up or down or stay where they are. that makes them to look different from what we are used to. 

'Topological properties' - seem to be eqaul for all breps

'Geometrical properties' - Area/ Volume centroid/ Locations of all vertices/ Bounding box (position, volume, etc.) could be values. 

to start, I'd want to try the idea i mentioned earlier: setting a boundry box around every stone and compare the locations of all vertices in relation to their boxes with all the other stones vertices locations. Do you have a hint for me how to get started?

thx so far

Attached is a file that groups together congruent polygons, which seems to be what you are looking for.

If you only have the breps of your bricks, you'll have to explode them and extract the boundary of the exposed face.

There are two tolerance values, one for the length of the sides and the other for the angles. These values correspond to the residual sum of squares (RSS). I have no idea if this method of checking the error is practical in this case but sounds cool.

Attachments:

The previous script would not work for some weird polygons with many angles and edge lengths that are the same but in a different order (in your case its probably good enough). This one should work for any polygon. It also lets you choose if you want to check for symmetrical polygons.

Attachments:

...was this useful?

Hey man, thanks. It's a pretty cool feature. It works well, I need to studie now what exactly it does where, to modify it. One of the outputs is the number of how many different polygons are in the script, but I can't get the number to 1 if I'm processing the geometry with galapagos. 

the polygons are created by a point grid. and these points are moved by sliders connected to galapagos to influence the number of different polygons in the end. Know what i mean?

Can this component create an output with the values it compares? so that i can use them for the next steps?

I couldn't test it yet, i'm on vacation. I'll inform you when i tried it.

You're German? I expected Spanish or Greek with that attitude :P

actually half brazilian ;) I guess that's where it comes from :D

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service