Spine Fix Concavity Check #228

Closed
opened 2025-07-06 14:13:57 +00:00 by Quaternions · 1 comment
Owner

I randomly came up with an algorithm to check concavity 👍

Procedure to add a new member

For each member in group:
For each face on member:
Face must either be flush with another member in group (forming a "connectivity graph edge"), or have no views of any member face i.e. dot(face_n,other_face_n)<0.

If any individual face fails, adding the member to the spinefix group would create a group with concavities. In that case, the group must be split into two convex groups, possibly with lots of checking to maximize each group size. An alternative optimization would be to aim for behaviour that is somehow independent of the order in which the objects are added to the spinefix groups.

Alternative implementations:

  1. Locate and calculate all applicable spinefix groups when the map loads in a deterministic way, meaning no runtime lag or RNG.
  2. Manually group ramps when creating the map, e.g. group them in a Model and name the model "SpineFix" and voila, spinefix groups calculated ahead of time.
I randomly came up with an algorithm to check concavity 👍 ### Procedure to add a new member For each member in group: For each face on member: Face must either be flush with another member in group (forming a "connectivity graph edge"), or have no views of any member face i.e. `dot(face_n,other_face_n)<0`. If any individual face fails, adding the member to the spinefix group would create a group with concavities. In that case, the group must be split into two convex groups, possibly with lots of checking to maximize each group size. An alternative optimization would be to aim for behaviour that is somehow independent of the order in which the objects are added to the spinefix groups. Alternative implementations: 1. Locate and calculate all applicable spinefix groups when the map loads in a deterministic way, meaning no runtime lag or RNG. 2. Manually group ramps when creating the map, e.g. group them in a Model and name the model "SpineFix" and voila, spinefix groups calculated ahead of time.
Author
Owner

whoops wrong repo

whoops wrong repo
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: StrafesNET/maps-service#228