# 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`()`