add name shortener and overload for matrix
This commit is contained in:
parent
0e24b6b03f
commit
6e8f830415
12
Makefile
12
Makefile
@ -1,25 +1,31 @@
|
|||||||
# Makefile
|
# Makefile
|
||||||
|
|
||||||
UNAME = $(shell uname)
|
UNAME = $(shell uname)
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
PROG = libsweet.so
|
PROG = libsweet.so
|
||||||
|
|
||||||
OBJS = sweet_math.o sweet_matrix.o sweet_matrix_stack.o sweet_geometry.o
|
OBJS = sweet_math.o sweet_matrix.o sweet_matrix_stack.o sweet_geometry.o
|
||||||
|
OBJS_WITH_SHORT = sweet_math_short.o sweet_matrix_short.o
|
||||||
|
|
||||||
CFLAGS = -pedantic -fPIC -Wall
|
CFLAGS = -pedantic -fPIC -Wall
|
||||||
LD = -shared
|
LD = -shared
|
||||||
|
|
||||||
|
ifeq ($(TARGET),short)
|
||||||
|
all: $(PROG)
|
||||||
|
$(PROG): $(OBJS) $(OBJS_WITH_SHORT)
|
||||||
|
$(CC) $(LD) $(OBJS) $(OBJS_WITH_SHORT) -o $(PROG)
|
||||||
|
else
|
||||||
all: $(PROG)
|
all: $(PROG)
|
||||||
$(PROG): $(OBJS)
|
$(PROG): $(OBJS)
|
||||||
$(CC) $(LD) $(OBJS) -o $(PROG)
|
$(CC) $(LD) $(OBJS) -o $(PROG)
|
||||||
|
endif
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
$(CC) $(CFLAGS) -c $*.c
|
$(CC) $(CFLAGS) -c $*.c
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(OBJS)
|
rm -rf $(OBJS) $(OBJS_WITH_SHORT)
|
||||||
|
|
||||||
mrproper:
|
mrproper:
|
||||||
rm -rf $(OBJS) $(PROG)
|
rm -rf $(OBJS) $(OBJS_WITH_SHORT) $(PROG)
|
||||||
|
|
||||||
|
|||||||
@ -25,9 +25,9 @@
|
|||||||
#define VEC3_BUILDER(_1, _2, _3, NAME, ...) NAME
|
#define VEC3_BUILDER(_1, _2, _3, NAME, ...) NAME
|
||||||
#define VEC4_BUILDER(_1, _2, _3, _4, NAME, ...) NAME
|
#define VEC4_BUILDER(_1, _2, _3, _4, NAME, ...) NAME
|
||||||
|
|
||||||
#define vec2_new(...) VEC2_BUILDER(__VA_ARGS__, sweet_vector_new2, vec2_new_v3)(__VA_ARGS__)
|
#define vec2_new(...) VEC2_BUILDER(__VA_ARGS__, sweet_vector_new2, vec2_new_v3, NULL)(__VA_ARGS__)
|
||||||
#define vec3_new(...) VEC3_BUILDER(__VA_ARGS__, sweet_vector_new3, vec3_new_v2_1f, vec3_new_v4)(__VA_ARGS__)
|
#define vec3_new(...) VEC3_BUILDER(__VA_ARGS__, sweet_vector_new3, vec3_new_v2_1f, vec3_new_v4, NULL)(__VA_ARGS__)
|
||||||
#define vec4_new(...) VEC4_BUILDER(__VA_ARGS__, sweet_vector_new4, vec4_new_v2_2f, vec4_new_v3_1f, vec4_new_v4)(__VA_ARGS__)
|
#define vec4_new(...) VEC4_BUILDER(__VA_ARGS__, sweet_vector_new4, vec4_new_v2_2f, vec4_new_v3_1f, vec4_new_v4, NULL)(__VA_ARGS__)
|
||||||
|
|
||||||
vec2 vec2_new_v3(vec3 w);
|
vec2 vec2_new_v3(vec3 w);
|
||||||
vec3 vec3_new_v2_1f(vec2 w, float z);
|
vec3 vec3_new_v2_1f(vec2 w, float z);
|
||||||
|
|||||||
179
sweet_matrix_short.c
Normal file
179
sweet_matrix_short.c
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
#include "sweet_types.h"
|
||||||
|
#include "sweet_matrix_short.h"
|
||||||
|
|
||||||
|
|
||||||
|
mat2 mat2_new_m3 (mat3 m)
|
||||||
|
{
|
||||||
|
mat2 n;
|
||||||
|
n.v[0] = m.v[0];
|
||||||
|
n.v[1] = m.v[1];
|
||||||
|
n.v[2] = m.v[3];
|
||||||
|
n.v[3] = m.v[4];
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat2 mat2_new_2v (vec2 e1, vec2 e2)
|
||||||
|
{
|
||||||
|
mat2 m;
|
||||||
|
m.v[0] = e1.x;
|
||||||
|
m.v[1] = e1.y;
|
||||||
|
m.v[2] = e2.x;
|
||||||
|
m.v[3] = e2.y;
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat2 mat2_new_3f (float a, float b, float c)
|
||||||
|
{
|
||||||
|
return mat2_new_4f (a, b, c, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
mat2 mat2_new_4f (float f0, float f1, float f2, float f3)
|
||||||
|
{
|
||||||
|
mat2 n;
|
||||||
|
n.v[0] = f0;
|
||||||
|
n.v[1] = f1;
|
||||||
|
n.v[2] = f2;
|
||||||
|
n.v[3] = f3;
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat3 mat3_new_m4 (mat4 m)
|
||||||
|
{
|
||||||
|
mat3 n;
|
||||||
|
n.v[0] = m.v[0];
|
||||||
|
n.v[1] = m.v[1];
|
||||||
|
n.v[2] = m.v[2];
|
||||||
|
|
||||||
|
n.v[3] = m.v[4];
|
||||||
|
n.v[4] = m.v[5];
|
||||||
|
n.v[5] = m.v[6];
|
||||||
|
|
||||||
|
n.v[6] = m.v[8];
|
||||||
|
n.v[7] = m.v[9];
|
||||||
|
n.v[8] = m.v[10];
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat3 mat3_new_2v (vec2 e1, vec2 e2)
|
||||||
|
{
|
||||||
|
mat3 m;
|
||||||
|
m.v[0] = e1.x;
|
||||||
|
m.v[1] = e1.y;
|
||||||
|
m.v[2] = 0;
|
||||||
|
|
||||||
|
m.v[3] = e2.x;
|
||||||
|
m.v[4] = e2.y;
|
||||||
|
m.v[5] = 0;
|
||||||
|
|
||||||
|
m.v[6] = 0;
|
||||||
|
m.v[7] = 0;
|
||||||
|
m.v[8] = 1;
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat3 mat3_new_3v (vec3 e1, vec3 e2, vec3 e3)
|
||||||
|
{
|
||||||
|
mat3 m;
|
||||||
|
m.v[0] = e1.x;
|
||||||
|
m.v[1] = e1.y;
|
||||||
|
m.v[2] = e1.z;
|
||||||
|
|
||||||
|
m.v[3] = e2.x;
|
||||||
|
m.v[4] = e2.y;
|
||||||
|
m.v[5] = e2.z;
|
||||||
|
|
||||||
|
m.v[6] = e3.x;
|
||||||
|
m.v[7] = e3.y;
|
||||||
|
m.v[8] = e3.z;
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat4 mat4_new_m4 (mat4 m)
|
||||||
|
{
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat4 mat4_new_2v (vec2 e1, vec2 e2)
|
||||||
|
{
|
||||||
|
mat4 m;
|
||||||
|
m.v[0] = e1.x;
|
||||||
|
m.v[1] = e1.y;
|
||||||
|
m.v[2] = 0;
|
||||||
|
m.v[3] = 0;
|
||||||
|
|
||||||
|
m.v[4] = e2.x;
|
||||||
|
m.v[5] = e2.y;
|
||||||
|
m.v[6] = 0;
|
||||||
|
m.v[7] = 0;
|
||||||
|
|
||||||
|
m.v[8] = 0;
|
||||||
|
m.v[9] = 0;
|
||||||
|
m.v[10] = 1;
|
||||||
|
m.v[11] = 0;
|
||||||
|
|
||||||
|
m.v[12] = 0;
|
||||||
|
m.v[13] = 0;
|
||||||
|
m.v[14] = 0;
|
||||||
|
m.v[15] = 1;
|
||||||
|
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat4 mat4_new_3v (vec3 e1, vec3 e2, vec3 e3)
|
||||||
|
{
|
||||||
|
mat4 m;
|
||||||
|
|
||||||
|
m.v[0] = e1.x;
|
||||||
|
m.v[1] = e1.y;
|
||||||
|
m.v[2] = e1.z;
|
||||||
|
m.v[3] = 0;
|
||||||
|
|
||||||
|
m.v[4] = e2.x;
|
||||||
|
m.v[5] = e2.y;
|
||||||
|
m.v[6] = e2.z;
|
||||||
|
m.v[7] = 0;
|
||||||
|
|
||||||
|
m.v[8] = e3.x;
|
||||||
|
m.v[9] = e3.y;
|
||||||
|
m.v[10] = e3.z;
|
||||||
|
m.v[11] = 0;
|
||||||
|
|
||||||
|
m.v[12] = 0;
|
||||||
|
m.v[13] = 0;
|
||||||
|
m.v[14] = 0;
|
||||||
|
m.v[15] = 1;
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
mat4 mat4_new_4v (vec4 e1, vec4 e2, vec4 e3, vec4 e4)
|
||||||
|
{
|
||||||
|
mat4 m;
|
||||||
|
|
||||||
|
m.v[0] = e1.x;
|
||||||
|
m.v[1] = e1.y;
|
||||||
|
m.v[2] = e1.z;
|
||||||
|
m.v[3] = e1.w;
|
||||||
|
|
||||||
|
m.v[4] = e2.x;
|
||||||
|
m.v[5] = e2.y;
|
||||||
|
m.v[6] = e2.z;
|
||||||
|
m.v[7] = e2.w;
|
||||||
|
|
||||||
|
m.v[8] = e3.x;
|
||||||
|
m.v[9] = e3.y;
|
||||||
|
m.v[10] = e3.z;
|
||||||
|
m.v[11] = e3.w;
|
||||||
|
|
||||||
|
m.v[12] = e4.x;
|
||||||
|
m.v[13] = e4.y;
|
||||||
|
m.v[14] = e4.z;
|
||||||
|
m.v[15] = e4.w;
|
||||||
|
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -20,6 +20,29 @@
|
|||||||
#define SWEET_MATRIX_SHORT_H
|
#define SWEET_MATRIX_SHORT_H
|
||||||
|
|
||||||
#include "sweet_matrix.h"
|
#include "sweet_matrix.h"
|
||||||
|
|
||||||
|
#define MAT2_BUILDER(_1, _2, _3, _4, NAME, ...) NAME
|
||||||
|
#define MAT3_BUILDER(_1, _2, _3, NAME, ...) NAME
|
||||||
|
#define MAT4_BUILDER(_1, _2, _3, _4, NAME, ...) NAME
|
||||||
|
|
||||||
|
#define mat2_new(...) MAT2_BUILDER(__VA_ARGS__, mat2_new_4f, mat2_new_3f, mat2_new_2v, mat2_new_m3, NULL)(__VA_ARGS__)
|
||||||
|
#define mat3_new(...) MAT3_BUILDER(__VA_ARGS__, mat3_new_3v, mat3_new_2v, mat3_new_m4, NULL)(__VA_ARGS__)
|
||||||
|
#define mat4_new(...) MAT4_BUILDER(__VA_ARGS__, mat4_new_4v, mat4_new_3v, mat4_new_2v, mat4_new_m4, NULL)(__VA_ARGS__)
|
||||||
|
|
||||||
|
mat2 mat2_new_m3 (mat3 m);
|
||||||
|
mat2 mat2_new_v2 (vec2 e1, vec2 e2);
|
||||||
|
mat2 mat2_new_3f (float a, float b, float c);
|
||||||
|
mat2 mat2_new_4f (float f0, float f1, float f2, float f3);
|
||||||
|
|
||||||
|
mat3 mat3_new_m4 (mat4 m);
|
||||||
|
mat3 mat3_new_2v (vec2 e1, vec2 e2);
|
||||||
|
mat3 mat3_new_3v (vec3 e1, vec3 e2, vec3 e3);
|
||||||
|
|
||||||
|
mat4 mat4_new_m4 (mat4 m);
|
||||||
|
mat4 mat4_new_2v (vec2 e1, vec2 e2);
|
||||||
|
mat4 mat4_new_3v (vec3 e1, vec3 e2, vec3 e3);
|
||||||
|
mat4 mat4_new_4v (vec4 e1, vec4 e2, vec4 e3, vec4 e4);
|
||||||
|
|
||||||
#define mat_null2 sweet_matrix_null2
|
#define mat_null2 sweet_matrix_null2
|
||||||
#define mat_null3 sweet_matrix_null3
|
#define mat_null3 sweet_matrix_null3
|
||||||
#define mat_null4 sweet_matrix_null4
|
#define mat_null4 sweet_matrix_null4
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user