vector math
This commit is contained in:
parent
f8d67c57e3
commit
648d1662c4
@ -78,7 +78,7 @@ void update(void) {
|
|||||||
|
|
||||||
mesh.rotation.x += .01f;
|
mesh.rotation.x += .01f;
|
||||||
mesh.rotation.y += .01f;
|
mesh.rotation.y += .01f;
|
||||||
mesh.rotation.z += .01f;
|
mesh.rotation.z += .02f;
|
||||||
|
|
||||||
int num_faces = array_length(mesh.faces);
|
int num_faces = array_length(mesh.faces);
|
||||||
for (int i = 0; i < num_faces; i++) {
|
for (int i = 0; i < num_faces; i++) {
|
||||||
|
79
src/vector.c
79
src/vector.c
@ -1,7 +1,45 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "vector.h"
|
#include "vector.h"
|
||||||
|
|
||||||
// Implement all vector functons
|
////////////////////////////////////////////////////////////////////
|
||||||
|
/// Vec 2d
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
float vec2_length(vec2_t v) {
|
||||||
|
return sqrt(v.x * v.x + v.y *v.y);
|
||||||
|
}
|
||||||
|
vec2_t vec2_add(vec2_t a, vec2_t b) {
|
||||||
|
vec2_t result = {
|
||||||
|
.x = a.x + b.x,
|
||||||
|
.y = a.y + b.y,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
vec2_t vec2_sub(vec2_t a, vec2_t b) {
|
||||||
|
vec2_t result = {
|
||||||
|
.x = a.x - b.x,
|
||||||
|
.y = a.y - b.y,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
vec2_t vec2_mul(vec2_t a, float factor) {
|
||||||
|
vec2_t result = {
|
||||||
|
.x = a.x * factor,
|
||||||
|
.y = a.y * factor,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
vec2_t vec2_div(vec2_t a, float factor){
|
||||||
|
vec2_t result = {
|
||||||
|
.x = a.x / factor,
|
||||||
|
.y = a.y / factor,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Vec 3d
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
vec3_t vec3_rotate_x(vec3_t v, float angle){
|
vec3_t vec3_rotate_x(vec3_t v, float angle){
|
||||||
vec3_t rotated_vector = {
|
vec3_t rotated_vector = {
|
||||||
.x = v.x,
|
.x = v.x,
|
||||||
@ -26,3 +64,42 @@ vec3_t vec3_rotate_z(vec3_t v, float angle) {
|
|||||||
};
|
};
|
||||||
return rotated_vector;
|
return rotated_vector;
|
||||||
}
|
}
|
||||||
|
float vec3_length(vec3_t v) {
|
||||||
|
return sqrt(v.x * v.x + v.y *v.y + v.z *v.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
vec3_t vec3_add(vec3_t a, vec3_t b) {
|
||||||
|
vec3_t result = {
|
||||||
|
.x = a.x + b.x,
|
||||||
|
.y = a.y + b.y,
|
||||||
|
.z = a.z + b.z,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3_t vec3_sub(vec3_t a, vec3_t b) {
|
||||||
|
vec3_t result = {
|
||||||
|
.x = a.x - b.x,
|
||||||
|
.y = a.y - b.y,
|
||||||
|
.z = a.z - b.z,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec3_t vec3_mul(vec3_t a, float factor) {
|
||||||
|
vec3_t result = {
|
||||||
|
.x = a.x * factor,
|
||||||
|
.y = a.y * factor,
|
||||||
|
.z = a.z * factor,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
vec3_t vec3_div(vec3_t a, float factor){
|
||||||
|
vec3_t result = {
|
||||||
|
.x = a.x / factor,
|
||||||
|
.y = a.y / factor,
|
||||||
|
.z = a.z / factor,
|
||||||
|
};
|
||||||
|
return result;
|
||||||
|
}
|
28
src/vector.h
28
src/vector.h
@ -2,20 +2,38 @@
|
|||||||
#define VECTOR_H
|
#define VECTOR_H
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
float x;
|
float x, y;
|
||||||
float y;
|
|
||||||
} vec2_t;
|
} vec2_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
float x;
|
float x, y, z;
|
||||||
float y;
|
|
||||||
float z;
|
|
||||||
} vec3_t;
|
} vec3_t;
|
||||||
|
|
||||||
|
/////
|
||||||
|
// Vec 2d
|
||||||
|
/////
|
||||||
|
float vec2_length(vec2_t v);
|
||||||
|
vec2_t vec2_add(vec2_t a, vec2_t b);
|
||||||
|
vec2_t vec2_sub(vec2_t a, vec2_t b);
|
||||||
|
vec2_t vec2_mul(vec2_t a, float factor);
|
||||||
|
vec2_t vec2_div(vec2_t a, float factor);
|
||||||
|
|
||||||
|
|
||||||
|
/////
|
||||||
|
// Vec 3d
|
||||||
|
/////
|
||||||
vec3_t vec3_rotate_x(vec3_t v, float angle);
|
vec3_t vec3_rotate_x(vec3_t v, float angle);
|
||||||
vec3_t vec3_rotate_y(vec3_t v, float angle);
|
vec3_t vec3_rotate_y(vec3_t v, float angle);
|
||||||
vec3_t vec3_rotate_z(vec3_t v, float angle);
|
vec3_t vec3_rotate_z(vec3_t v, float angle);
|
||||||
|
float vec3_length(vec3_t v);
|
||||||
|
vec3_t vec3_add(vec3_t a, vec3_t b);
|
||||||
|
vec3_t vec3_sub(vec3_t a, vec3_t b);
|
||||||
|
vec3_t vec3_mul(vec3_t a, float factor);
|
||||||
|
vec3_t vec3_div(vec3_t a, float factor);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user