I assume that the position of your points are relative to the origin matrix, which you say can be translated/rotated.
Assuming all this is necessary, the new positions of your points are given by:
pos_newCoord = R^-1 * T^-1 * pos_oldCoord
What you're doing is you're taking your new origin, translating it back to the old origin, and unrotating it. Written another way:
newOrigin = myTranslation(myRotation(oldOrigin))
def newCoordinates(point):
return inverse(myRotation)(inverse(myTranslation)(point))
You can pre-calculate the inverse operations, especially if you're using 4d matrices.
"how to determine the change in rotation and translation for the origin based around the changes of rotation and translation for the cameras?" –OP
If you are not told this information, you can recover it as follows. We'll be using 4d points and a 4v4 affine transformation matrix ( en.wikipedia.org/wiki/Affine_transformation ).
- Take the any 4 cameras.
- Consider the original camera points vs their translated/rotated points.
- There's probably a nicer linear algebra way to do it, but if you visit the Wikipedia link, we notice there's a 3x3 submatrix A and a 3x1 submatrix b, and thus 12 unknowns. 4 points with 3 equations per point gives you 12 equations. There's a solution because matrices of this form are invertible*. Solve using your favorite system-of-linear-equation solving technique, e.g. Gaussian elimination on a 12x12 matrix.