To simplify the question, I'm boiling down one of the mechanics of my game into two hexagons. The mechanic comes down to rotating the black hexagon to align with the red hexagon. The black hexagon will encounter red hexagons that are oriented around an arbitrary angle. The black hexagon will rotate smoothly to match the orientation of the next selected red hexagon. The red hexagons might not be perfect hexagons. That is, they might be slightly deformed and the angles of the corners might be bigger or smaller than 60 degrees.
The alignment portion of the rotation (getting all …