From 0ae5be6c6697f5f5f578a27c5ad9ba845aec43c9 Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 9 May 2020 21:31:30 +0200 Subject: Added basic vector and matrix library --- vendor/libft | 2 +- vendor/libftm/Makefile | 49 +++++++++++++++++++++++++++++++++ vendor/libftm/README.md | 3 ++ vendor/libftm/inc/libftm_vec3.h | 31 +++++++++++++++++++++ vendor/libftm/inc/libftm_vec4.h | 30 ++++++++++++++++++++ vendor/libftm/libft.a | Bin 0 -> 12818 bytes vendor/libftm/src/vec3/ftm_vec3add.c | 21 ++++++++++++++ vendor/libftm/src/vec3/ftm_vec3cross.c | 26 +++++++++++++++++ vendor/libftm/src/vec3/ftm_vec3dot.c | 20 ++++++++++++++ vendor/libftm/src/vec3/ftm_vec3scale.c | 21 ++++++++++++++ vendor/libftm/src/vec3/ftm_vec3sub.c | 21 ++++++++++++++ vendor/libftm/src/vec4/ftm_vec4add.c | 22 +++++++++++++++ vendor/libftm/src/vec4/ftm_vec4dot.c | 21 ++++++++++++++ vendor/libftm/src/vec4/ftm_vec4scale.c | 22 +++++++++++++++ vendor/libftm/src/vec4/ftm_vec4sub.c | 22 +++++++++++++++ 15 files changed, 310 insertions(+), 1 deletion(-) create mode 100644 vendor/libftm/Makefile create mode 100644 vendor/libftm/README.md create mode 100644 vendor/libftm/inc/libftm_vec3.h create mode 100644 vendor/libftm/inc/libftm_vec4.h create mode 100644 vendor/libftm/libft.a create mode 100644 vendor/libftm/src/vec3/ftm_vec3add.c create mode 100644 vendor/libftm/src/vec3/ftm_vec3cross.c create mode 100644 vendor/libftm/src/vec3/ftm_vec3dot.c create mode 100644 vendor/libftm/src/vec3/ftm_vec3scale.c create mode 100644 vendor/libftm/src/vec3/ftm_vec3sub.c create mode 100644 vendor/libftm/src/vec4/ftm_vec4add.c create mode 100644 vendor/libftm/src/vec4/ftm_vec4dot.c create mode 100644 vendor/libftm/src/vec4/ftm_vec4scale.c create mode 100644 vendor/libftm/src/vec4/ftm_vec4sub.c (limited to 'vendor') diff --git a/vendor/libft b/vendor/libft index b512434..02abc03 160000 --- a/vendor/libft +++ b/vendor/libft @@ -1 +1 @@ -Subproject commit b5124347359833fcde33452978c62133879c6c9e +Subproject commit 02abc030a68cb2fdd2f21c96db830ec8cb9176ad diff --git a/vendor/libftm/Makefile b/vendor/libftm/Makefile new file mode 100644 index 0000000..2348458 --- /dev/null +++ b/vendor/libftm/Makefile @@ -0,0 +1,49 @@ +# **************************************************************************** # +# # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: charles +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2020/05/09 20:44:53 by charles #+# #+# # +# Updated: 2020/05/09 21:20:08 by charles ### ########.fr # +# # +# **************************************************************************** # + +LIB = ar rcs +RM = rm -f + +SRC_DIR = src +INC_DIR = inc +OBJ_DIR = obj + +CC = gcc +OFLAG ?= -O0 +CCFLAGS = $(OFLAG) -I$(INC_DIR) -Wall -Wextra -Werror + +NAME = libft.a + +SRC = $(shell find $(SRC_DIR) -type f -name '*.c') +INC = $(shell find $(INC_DIR) -type f -name '*.h') +OBJ = $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) + +OBJ_SUB_DIR = $(shell find $(SRC_DIR) -type d | sed 's/$(SRC_DIR)/$(OBJ_DIR)/') + +all: prebuild $(NAME) + +prebuild: + mkdir -p $(OBJ_DIR) $(OBJ_SUB_DIR) + +$(NAME): $(OBJ) $(INC) + $(LIB) $@ $(OBJ) + +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c + $(CC) $(CCFLAGS) -c -o $@ $< + +clean: + $(RM) $(OBJ) + +fclean: clean + $(RM) $(NAME) + +re: fclean all diff --git a/vendor/libftm/README.md b/vendor/libftm/README.md new file mode 100644 index 0000000..0d0fbb0 --- /dev/null +++ b/vendor/libftm/README.md @@ -0,0 +1,3 @@ +# libftm + +Matrix and vector extension of the libft diff --git a/vendor/libftm/inc/libftm_vec3.h b/vendor/libftm/inc/libftm_vec3.h new file mode 100644 index 0000000..fc86dcb --- /dev/null +++ b/vendor/libftm/inc/libftm_vec3.h @@ -0,0 +1,31 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libftm_vec3.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 20:38:30 by charles #+# #+# */ +/* Updated: 2020/05/09 21:12:05 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFTM_VEC3_H +# define LIBFTM_VEC3_H + +/* +** \brief 3 component vector [x, y, z] +*/ + +typedef struct +{ + float v[3]; +} t_ftmvec3; + +t_ftmvec3 *ftm_vec3add(t_ftmvec3 *dst, t_ftmvec3 *other); +t_ftmvec3 *ftm_vec3sub(t_ftmvec3 *dst, t_ftmvec3 *other); +float ftm_vec3dot(t_ftmvec3 *a, t_ftmvec3 *b); +void ftm_vec3cross(t_ftmvec3 *dst, t_ftmvec3 *a, t_ftmvec3 *b); +t_ftmvec3 *ftm_vec3scale(t_ftmvec3 *dst, float scalar); + +#endif diff --git a/vendor/libftm/inc/libftm_vec4.h b/vendor/libftm/inc/libftm_vec4.h new file mode 100644 index 0000000..e89bd89 --- /dev/null +++ b/vendor/libftm/inc/libftm_vec4.h @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* libftm.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 20:48:30 by charles #+# #+# */ +/* Updated: 2020/05/09 21:11:12 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef LIBFTM_VEC4_H +# define LIBFTM_VEC4_H + +/* +** \brief 4 component vector [x, y, z, w] +*/ + +typedef struct +{ + float v[4]; +} t_ftmvec4; + +t_ftmvec4 *ftm_vec4add(t_ftmvec4 *dst, t_ftmvec4 *other); +t_ftmvec4 *ftm_vec4sub(t_ftmvec4 *dst, t_ftmvec4 *other); +float ftm_vec4dot(t_ftmvec4 *a, t_ftmvec4 *b); +t_ftmvec4 *ftm_vec4scale(t_ftmvec4 *dst, float scalar); + +#endif diff --git a/vendor/libftm/libft.a b/vendor/libftm/libft.a new file mode 100644 index 0000000..dc5b185 Binary files /dev/null and b/vendor/libftm/libft.a differ diff --git a/vendor/libftm/src/vec3/ftm_vec3add.c b/vendor/libftm/src/vec3/ftm_vec3add.c new file mode 100644 index 0000000..9b5bd09 --- /dev/null +++ b/vendor/libftm/src/vec3/ftm_vec3add.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec3add.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 20:35:59 by charles #+# #+# */ +/* Updated: 2020/05/09 21:14:12 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec3.h" + +t_ftmvec3 *ftm_vec3add(t_ftmvec3 *dst, t_ftmvec3 *other) +{ + dst->v[0] += other->v[0]; + dst->v[1] += other->v[1]; + dst->v[2] += other->v[2]; + return (dst); +} diff --git a/vendor/libftm/src/vec3/ftm_vec3cross.c b/vendor/libftm/src/vec3/ftm_vec3cross.c new file mode 100644 index 0000000..c27534e --- /dev/null +++ b/vendor/libftm/src/vec3/ftm_vec3cross.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec3cross.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 21:20:41 by charles #+# #+# */ +/* Updated: 2020/05/09 21:25:44 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec3.h" + +/* +** s1 = a2 * b3 - a3 * b2 +** s2 = a3 * b1 - a1 * b3 +** s3 = a1 * b2 - a2 * b1 +*/ + +void ftm_vec3cross(t_ftmvec3 *dst, t_ftmvec3 *a, t_ftmvec3 *b) +{ + dst->v[0] = a->v[1] * b->v[2] - a->v[2] * b->v[1]; + dst->v[1] = a->v[2] * b->v[0] - a->v[0] * b->v[2]; + dst->v[2] = a->v[0] * b->v[1] - a->v[1] * b->v[0]; +} diff --git a/vendor/libftm/src/vec3/ftm_vec3dot.c b/vendor/libftm/src/vec3/ftm_vec3dot.c new file mode 100644 index 0000000..5d67ce6 --- /dev/null +++ b/vendor/libftm/src/vec3/ftm_vec3dot.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec3dot.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 21:06:09 by charles #+# #+# */ +/* Updated: 2020/05/09 21:14:44 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec3.h" + +float ftm_vec3dot(t_ftmvec3 *a, t_ftmvec3 *b) +{ + return (a->v[0] * b->v[0] + + a->v[1] * b->v[1] + + a->v[2] * b->v[2]); +} diff --git a/vendor/libftm/src/vec3/ftm_vec3scale.c b/vendor/libftm/src/vec3/ftm_vec3scale.c new file mode 100644 index 0000000..8782675 --- /dev/null +++ b/vendor/libftm/src/vec3/ftm_vec3scale.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec3scale.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 21:00:32 by charles #+# #+# */ +/* Updated: 2020/05/09 21:14:10 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec3.h" + +t_ftmvec3 *ftm_vec3scale(t_ftmvec3 *dst, float scalar) +{ + dst->v[0] *= scalar; + dst->v[1] *= scalar; + dst->v[2] *= scalar; + return (dst); +} diff --git a/vendor/libftm/src/vec3/ftm_vec3sub.c b/vendor/libftm/src/vec3/ftm_vec3sub.c new file mode 100644 index 0000000..880acbc --- /dev/null +++ b/vendor/libftm/src/vec3/ftm_vec3sub.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec3sub.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 20:57:33 by charles #+# #+# */ +/* Updated: 2020/05/09 21:14:20 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec3.h" + +t_ftmvec3 *ftm_vec3sub(t_ftmvec3 *dst, t_ftmvec3 *other) +{ + dst->v[0] -= other->v[0]; + dst->v[1] -= other->v[1]; + dst->v[2] -= other->v[2]; + return (dst); +} diff --git a/vendor/libftm/src/vec4/ftm_vec4add.c b/vendor/libftm/src/vec4/ftm_vec4add.c new file mode 100644 index 0000000..bf8ef1d --- /dev/null +++ b/vendor/libftm/src/vec4/ftm_vec4add.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec4add.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 20:45:59 by charles #+# #+# */ +/* Updated: 2020/05/09 21:15:07 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec4.h" + +t_ftmvec4 *ftm_vec4add(t_ftmvec4 *dst, t_ftmvec4 *other) +{ + dst->v[0] += other->v[0]; + dst->v[1] += other->v[1]; + dst->v[2] += other->v[2]; + dst->v[3] += other->v[3]; + return (dst); +} diff --git a/vendor/libftm/src/vec4/ftm_vec4dot.c b/vendor/libftm/src/vec4/ftm_vec4dot.c new file mode 100644 index 0000000..dc8864a --- /dev/null +++ b/vendor/libftm/src/vec4/ftm_vec4dot.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec4dot.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 21:06:09 by charles #+# #+# */ +/* Updated: 2020/05/09 21:15:32 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec4.h" + +float ftm_vec4dot(t_ftmvec4 *a, t_ftmvec4 *b) +{ + return (a->v[0] * b->v[0] + + a->v[1] * b->v[1] + + a->v[2] * b->v[2] + + a->v[3] * b->v[3]); +} diff --git a/vendor/libftm/src/vec4/ftm_vec4scale.c b/vendor/libftm/src/vec4/ftm_vec4scale.c new file mode 100644 index 0000000..ddff937 --- /dev/null +++ b/vendor/libftm/src/vec4/ftm_vec4scale.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec4scale.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 21:00:42 by charles #+# #+# */ +/* Updated: 2020/05/09 21:15:21 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec4.h" + +t_ftmvec4 *ftm_vec4scale(t_ftmvec4 *dst, float scalar) +{ + dst->v[0] *= scalar; + dst->v[1] *= scalar; + dst->v[2] *= scalar; + dst->v[3] *= scalar; + return (dst); +} diff --git a/vendor/libftm/src/vec4/ftm_vec4sub.c b/vendor/libftm/src/vec4/ftm_vec4sub.c new file mode 100644 index 0000000..8082ddd --- /dev/null +++ b/vendor/libftm/src/vec4/ftm_vec4sub.c @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ftm_vec4sub.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 20:57:43 by charles #+# #+# */ +/* Updated: 2020/05/09 21:15:13 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libftm_vec4.h" + +t_ftmvec4 *ftm_vec4sub(t_ftmvec4 *dst, t_ftmvec4 *other) +{ + dst->v[0] -= other->v[0]; + dst->v[1] -= other->v[1]; + dst->v[2] -= other->v[2]; + dst->v[3] -= other->v[3]; + return (dst); +} -- cgit