I have two coordinate systems, like so
How can I transform a point on the one of the coordinate system to other ?
Pxyz = M . Px'y'z' what is M ?
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It only takes a minute to sign up.Sign up to join this community
From the image it looks like both your coordinate systems are cartesian coordinates, where the only difference between the two is that one has a different origin from the other.
If this is the case then to translate from
xyz coordinates to
x'y'z' coordinates all you need is a translation, i.e.
x' = x + dx y' = y + dy z' = z + dz
Where [dx, dy, dz] is the difference between the origins of the two coordinate systems.
Matrix multiplications always have the origin as a fixed point and so you can't perform translations using a 3x3 matrix, however as a sort of workaround you can express your 3-dimensional coordinates as the 4-dimensional vector
[x, y, z, 1] and use a 4x4 transformation matrix that includes a translation, e.g.
|1 0 0 dx | |x| |x + dx| |0 1 0 dy | |y| |y + dy| |0 0 1 dz | |z| = |z + dz| |0 0 0 1 | |1| | 1 |
You can then ignore the 4th component to get the translated 3D coordinates. See more on Wikipedia here