I am working with matrix math for parent / child transformations. I have to modify existing calculations to keep child scale constant while also keeping child position relative to its parent.
Here’s some info about what I am given:
Input
Appends two matrices. AB = A * B
a – The local (child) matrix.
b – The world (parent) matrix.
Matrix
A matrix has of the following properties:
a – x scale
b – y skew
c – x skew
d – y scale
tx – x translation
ty – y translation
Working Calculations
This is the calculation that scales the child correctly based on parent resize:
a.a = (a.a * b.a) + (a.b * b.c)
This transfroms the child’s x position correctly when the parent’s x position changes:
a.tx = (a.tx * b.a) + b.tx
My goal
I want to keep the child’s size constant, while still keeping it positioned based on the parent. When I try to change the transformation equation (a.tx), I get undesired results. I will post them below.
(To keep the child’s scale the same I just set a.a = a.a)
This is the original parent/child setup. The parent is black, the children are all white
What is the correct equation to set a.tx to? I have tried a.tx = (a.tx + b.tx), but what didn’t work either.