Skip to main content

programming - How to find alignments of interlocking shapes?


I'm searching for the ways to align interlocking shapes, that is, finding the locations and rotations that maximize the arc length at which they touch.


For simplicity, I'm assuming 'shapes' are one dimensional closed curves embedded in the two dimensional plane.


For example, consider these two shapes:


f = LaminaData["Salinon", "Region"];

Show[
DiscretizeRegion[f[1, .5]],

DiscretizeRegion[Disk[{2, 0}, 0.25], MeshCellStyle -> Green]
]

enter image description here


There are two ways to position the circle so that it fits with this other shape:


enter image description here enter image description here


And of course any rotation of the circles will do.


I'd like to automate this in a general way and am not sure how to begin. Does Mathematica have a built-in functionality that I can leverage to implement this?




Comments