Ok, my maths skills are now apparently zero…I have an “Orientation” class that maintain pos, up and face vectors. It provides the transformation matrix for my objects and has tiltLeft/right, lookUp/Down, etc. I wrote it years ago and haven’t touched it since.

I now want to add a scale vector. So to the getTransformationMatrix method I added

```
Matrix4x4 mT
// The X column (0,1,2,3) is the crossProduct of the
// Up and Facing vectors i.e. the vector which is
// perpendicular to them (the X-axis)
Vector3 vxAxis = crossProduct( vUp, -vFace)
mT[0] = vxAxis[0] * vScale[0]
mT[1] = vxAxis[1]
mT[2] = vxAxis[2]
mT[3] = 0;
// The Y column (4,5,6,7) is the Up vector
mT[4] = vUp[0]
mT[5] = vUp[1] * vScale[1]
mT[6] = vUp[2]
mT[7] = 0;
// The Z column (8,9,10,11) is the Facing vector
mT[8] = vFace[0]
mT[9] = vFace[1]
mT[10] = vFace[2] * vScale[2]
mT[11] = 0
// The Location column (12,13,14,15) is the position
mT[12] = vPos[0]
mT[13] = vPos[1]
mT[14] = vPos[2]
mT[15] = 1;
```

I was only using this for objects drawn with no rotations (so vUp=0,1,0 and vFace=0,0,-1) and it all worked. The shapes were translated and scaled (these were 2D GUI shapes).

However I just rotated (tiltRight, again 2D GUI shape) an object and it all goes wrong (the shape rotates, but also sort of shrinks, grows, shinks, grows with a period of 90 degrees (so 0,180 it is normal, 90,270 is at it’s smallest).

I guess I need to use vScale elsewhere or differently, but where? The other relevant parts are the Orientation tiltRight code that changes the vUp

```
Matrix4x4 mRot
mRot.loadRotation(degrees, vFace)
vUp.rotate(mRot)
```

and Maxtrix4x4 loadRotation and Vector3 rotate code.

Sorry for a newbie question. Cheers,

Stuart.