Apologies if this is a dumb question, i’m very new to working in 3D.
I have a number of pinhole cameras with a 3×3 rotation matrix and a translation vector based around the origin (0,0,0).
The system I’m working with can move the origin point and rotate the cameras (though all kept relative to one another), resulting in a new rotation matrix and translation vector for each camera, which I can access.
My question then, is: given a point with a 3D position in the original space, how does one compute the 3D position of the same point in the new space using the new rotation/translation of the same camera (or cameras)?
And while I’m asking questions, is there a more efficient means of doing so?
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:
What you’re doing is you’re taking your new origin, translating it back to the old origin, and unrotating it. Written another way:
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 ).