I realized that I hadn’t attached the file for the mesh and probably didn’t explain my question clearly enough.
Mesh sample.3dm (878.0 KB)
I am looking for an algorithm to fit a plane based on the local convexity of a mesh. The mesh is very roughly elliptical cylinder-like, one side is flatter, the other convex. The simplest 3D algorithm, I imagine, would be this:
- Find the local long axis of the mesh. For each vertex of the mesh construct planes based on the long axis vector, the selected vertex and another vertex (loop through all vertices). For each of the planes obtain the ratio between its intersection area with the mesh and the clipped* volume (*in areas where the plane passes on the outside of the mesh, this measure would also include the volume enclosed between the plane and the mesh rather than only clipped volume). Find the maximum ratio.
But this algorithm would probably be extremely slow. The other option I have considered is this (2D algorithm):
Using the local long axis of the mesh, construct cross-sections. In each cross-section, from each vertex shoot a chord to every other vertex. Maximize the ratio between the length of the chord and the clipped* area (*plus enclosed area for chords passing on the outside of the cross-section). Fit a plane to the collection of chords obtained from the cross-sections.
This way, the number of cross-sections can be varied to make a small subsample of the mesh.
I am sure there is a better way, though. Maybe there are standard algorithms for this?