# Restoring object relation in 3D space

Heya

The Problem that I have: I have two GameObjects A and B and their respective worldspace positions and orientations at a certain point in time. Now stuff happens in the game and object A has changed its position and orientation. What I want to do now, is basically move and rotate object B so that it has the same position and orientation as before relative to object A.

The idea I came up with so far is:

``````// get the relations from the previous state
Vector3 transDif = B.OldPosition - A.OldPosition;
Quaternion AQuatDif = Inverse(A.OldRotation) * B.OldRotation;
Quaternion BQuatDif = Inverse(B.OldRotation) * A.OldRotation;

//rotate and apply the translation
B.NewPos = AQuatDif*transDif + A.NewPos;
B.NewRot = A.NewRotation * BQuatDif;
``````

Since my math is a bit rusty I just wanted to make sure my calculations are right and see if anyoneâ€™s got a better solution for the problem. Cheers.

waitâ€¦
waitâ€¦

Cant you just use `transform.transformPoint` to do relative positioning?

And simple `transform.rotation = other.rotation + rotationdiff`?

Hope this helps,
Benproductions1