Test one group of geometric shape for equality with another geometry

Hi, I have one list of different mesh geometries. Another list consists of one geometry, which should be my geometry to search with in the first list. How can I test for geometrical equality?

Thanks for your time and answers!

By Volume? Area? # of sides? Tolerance?

1 Like

They could still be shaped differently, even if you compare your criterias all together.

Hello
if you know the answers why asking question ?
Because like Rickson I will have said Volume Area, number of points, edges … length of edges … with a certain tolerance. Your question is so open to the rules you have that it is very hard to find one anwser.
There is a discussion like that in order to remove duplicate curves (on same positions)


You can look at the logic and implement the same for you problem.
The question you must answer are:
Are all object on same position ?
Are all object on same orientation ?
Are they same source ?
What are your tolerances ?
Is is an academic game to test you knowledge ?

For sure a multicriteria logic is mandatory
Surface
Volume if volumic mesh
Same oriented Bouding Box
Same number of edges, points, faces
If 2 objects are really the same (they were just transformed with rotation and translation) you can also measure the face surfaces, then test for equality for each face if OK
try to orient a mesh the the other and test the position/orientation … of each face is the same as the other …

2 Likes

As others pointed … what are your criteria? That said have in mind that equality on objects is a giant rabbit hole meaning that you’ll be (in most of cases) never sure for the result. For instance imagine that we test 2 meshes that have the same N of Vertices, Edges and Faces plus the same Connectivity … but differ in Topology > this means that more comparisons are required.

The general case for object (let’s assume for the moment: Breps or Meshes) equality has as follows (bad news: code driven solution, good news: very easy to do it, ugly news: may yield bananas).

  1. Create a Class that contains (say as “properties”) as many characteristics of your objects: ID, Connectivity, Vertices, Edges, Faces, Area, Volume (if applicable) plus a variety of other stuff as well (depending upon the type of the object).
  2. Then create a List of the Class type (kind of DataTree so to speak) that contains all these informations (per object) .
  3. Then LINQ query the List and get the result(s) - well … if you are lucky, that is.

But as I said … all these are easy via code … or a nightmare if you are not in this path.

Anyway if you want to observe all the above in action provide a sample of your objects and the equality criteria that you have in mind.

1 Like

Hello,

How many objects in each list? Is speed important? Is it acceptable to have some manual selection if necessary ? Is it possible for the sought object not to exist in the list of reference objects ?

  • G
1 Like

All of your ideas for criterias are very helpful. Thank you for your help!