kettek2/wiki/games/newsboy/Newsboy_0x00/engine/Vector.c

52 lines
1.1 KiB
C

#include <stdlib.h>
#include <math.h>
#include "Vector.h"
int cleanVector(struct Vector *vector) {
if (vector == NULL) return 1;
vector->x = 0;
vector->y = 0;
vector->z = 0;
return 0;
}
struct Vector addVector(struct Vector dst, struct Vector src) {
dst.x += src.x;
dst.y += src.y;
dst.z += src.z;
return dst;
}
struct Vector subVector(struct Vector dst, struct Vector src) {
dst.x -= src.x;
dst.y -= src.y;
dst.z -= src.z;
return dst;
}
struct Vector mulVector(struct Vector dst, double mul) {
dst.x *= mul;
dst.y *= mul;
dst.z *= mul;
return dst;
}
struct Vector divVector(struct Vector dst, double div) {
dst.x /= div;
dst.y /= div;
dst.z /= div;
return dst;
}
float dotVectors(struct Vector dst, struct Vector src) {
dst.x *= src.x;
dst.y *= src.y;
dst.z *= src.z;
return dst.x + dst.y + dst.z;
}
float magVector(struct Vector dst) {
return sqrt(dst.x*dst.x + dst.y*dst.y);
}
Vector normVector(struct Vector dst) {
double magnitude = sqrt(dst.x*dst.x + dst.y*dst.y);
if (magnitude != 0) {
dst = divVector(dst, magnitude);
}
return dst;
}