I am needing to scale/rotate some uvmapping and not sure how to use some of the functions.
A point can be transformed by a matrix.
myPointA * (matrix) = myPointB
The type of matrix you multiply by will do different things to PointA. So the trick is to construct an appropriate scaling, rotation, transformation, etc. matrix to multiply by.
A single matrix can be constructed by muliplying matrices together.
ScaleMatrix * RotationMatrix * TransformationMatrix = C
PointA * C = PointB
So to scale a point you first construct a Scaling matrix. This is done by
Mathutils.ScaleMatrix(scaling_factor, matrix_size, (optional)abitrary_axis)
scaling_factor = the scaling amout
matrix_size = the size of the square matrix to return (2,3,4)
abitrary_axis = an optional parameter to scale along an abitrary axis (like a shear really)
If i remember correctly in this equation:
A * B = C
where A, B is either matrix/vector or vector/matrix
the # of columns in A must equal the # of rows in B
[x,x,x] * [x,x,x] = 3 columns A * 3 rows in B
[x,x,x]
[x,x,x]
This is the reason for the matrix_size. If you are scaling a 2D coordinate you need a 2x2 matrix to scale it.
So:
scaleMatrix = Mathutils.ScaleMatrix(2,3)
myPoint = Mathutils.Vector([1,2,3])
transformedPoint = Mathutils.VecMultMat(myPoint ,scaleMatrix)
print myPoint
print transformedPoint
the output should read:
[1,2,3]
[2,4,6]