7
Vector *createv(double x, double y, double z, double w) {
10
n = (Vector *) malloc(sizeof(Vector));
21
void destroyv(Vector *v) {
27
void printv(Vector *v) {
29
printf("x = %g, y = %g, z = %g, w = %g\n", v->x, v->y, v->z, v->w);
33
/* Do a transformation */
34
void transform(double **m, Vector *v, Vector *r) {
36
r->x = m[0][0]*v->x + m[0][1]*v->y + m[0][2]*v->z + m[0][3]*v->w;
37
r->y = m[1][0]*v->x + m[1][1]*v->y + m[1][2]*v->z + m[1][3]*v->w;
38
r->z = m[2][0]*v->x + m[2][1]*v->y + m[2][2]*v->z + m[2][3]*v->w;
39
r->w = m[3][0]*v->x + m[3][1]*v->y + m[3][2]*v->z + m[3][3]*v->w;