MulManyVec3Mat33DivZ_F16

Multiplies a 3x3 matrix of 16.16 values by 1 or more 3-coordinate vectors of 16.16 values, then multiplies x and y elements of the result vector by ratio of n/z.

Synopsis

void MulManyVec3Mat33DivZ_F16( mmv3m33d *s )

Description

This function multiplies a 3x3 matrix of 16.16 fractions by one or more 3-coordinate vectors of 16.16 values. It then multiplies the x and y elements of the result vector {x, y, z} by the ratio of n/z, and deposits the result vector {x*n/z, y*n/z, z} in the product vector dest. This function can be used to perform the final projection transformation on points just before rendering.

This function uses the structure mmv3m33d. Here is its definition:

// structure to pass arguments to MulManyVec3Mat33DivZ_F16 function typedef struct mmv3m3dd{vec3f16*dest; vec3f16*src;mat33f16*mat; frac16n; uint32count;} mmv3m33d;

Arguments

s->dest
A pointer to the destination vector to store
results.
s->vec
A pointer to the vector to multiply.
s->mat
A pointer to the 3 X 3 matrix of 16.16
fractions to multiply.
s->n
Scale factor to be multiplied by x and y
projected results.
s->count
Number of vectors for the multiplication.

Implementation

SWI implemented in operamath V20.

Associated Files

operamath.h

See Also

MulManyVec3Mat33_F16()