How to calculate required rotation of a parent object by a given rotation of a child

I have simple model of an atom consisting of a sphere as parent and cylinders as children coming out of it. These cylinders are docking points for connecting atoms to each other.

When I want to “connect” one atom a1 via docking point d1 to an atom a2 with docking point d2, I can calculate the required position and rotation of d2 based on d1 in c# script. But how do I determine the rotation of d2, the parent object of a2? Especially when all atoms can have any position and rotation.

Ok, so what you mean is you have more of those things in the picture and they should connect to each other at the ends of the cylinders sticking out.

What about doing this each time you want to align 2 objects:

  • call the objects obj1 and obj2.

  • Each has just 1 docking port to keep my description simple but the concept should still work for multiple connectors

  • each docking port has a connector transform pointing out and a transform pointing in

  • obj1 will remain stationary

  • obj2 will move to dock with obj1.

  • 1)spawn empty gameobject (call it bob)

  • 2)give bob the world position and rotation of obj2 inward pointing connector

    1. parent obj2 to bob
  • 4)give bob the position and rotation of obj1 outward pointing connector

  • 5)unparent obj2 from bob

  • 6)delete bob