52 lines
1.1 KiB
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;
|
|
}
|