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 --- Makefile | 6 +-- inc/scop.h | 35 ++++++++++++++ res/basic_cube.obj | 14 ++++++ res/cube.mtl | 12 +++++ res/cube.obj | 40 ++++++++++++++++ src/main.c | 47 +++++++++++-------- src/parse.c | 83 +++++++++++++++++++++++++++++++++ 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 +++++++++ 22 files changed, 525 insertions(+), 23 deletions(-) create mode 100644 inc/scop.h create mode 100644 res/basic_cube.obj create mode 100644 res/cube.mtl create mode 100644 res/cube.obj create mode 100644 src/parse.c 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 diff --git a/Makefile b/Makefile index 1945278..ac009ed 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: charles +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2020/05/09 10:24:52 by charles #+# #+# # -# Updated: 2020/05/09 10:38:27 by charles ### ########.fr # +# Updated: 2020/05/09 10:42:39 by charles ### ########.fr # # # # **************************************************************************** # @@ -21,7 +21,7 @@ INC_DIR = inc OBJ_DIR = obj CC = gcc -CCFLAGS = -I$(LIBFT_DIR)/include -I$(INCLUDE_DIR) \ +CCFLAGS = -I$(LIBFT_DIR)/include -I$(INC_DIR) \ -Wall -Wextra #-Werror LDFLAGS = -L$(LIBFT_DIR) -lft @@ -42,7 +42,7 @@ prebuild: $(NAME): $(OBJ) $(CC) -o $@ $^ $(LDFLAGS) -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(INC) $(CC) $(CCFLAGS) -c -o $@ $< cleanloc: diff --git a/inc/scop.h b/inc/scop.h new file mode 100644 index 0000000..8ae9864 --- /dev/null +++ b/inc/scop.h @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* scop.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 10:41:44 by charles #+# #+# */ +/* Updated: 2020/05/09 11:41:48 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef SCOP_H +# define SCOP_H + +# include +# include +# include +# include +# include "libft.h" +# include "libft_vec.h" + +typedef struct +{ + float *vertices; + unsigned int indices; +} t_object; + +/* +** parse.c +*/ + +int parse(char *filepath, t_object *object); + +#endif diff --git a/res/basic_cube.obj b/res/basic_cube.obj new file mode 100644 index 0000000..9884f37 --- /dev/null +++ b/res/basic_cube.obj @@ -0,0 +1,14 @@ +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +f 1 5 7 3 +f 4 3 7 8 +f 8 7 5 6 +f 6 2 4 8 +f 2 1 3 4 +f 6 5 1 2 diff --git a/res/cube.mtl b/res/cube.mtl new file mode 100644 index 0000000..e8374a5 --- /dev/null +++ b/res/cube.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Material +Ns 323.999994 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 diff --git a/res/cube.obj b/res/cube.obj new file mode 100644 index 0000000..fbcb334 --- /dev/null +++ b/res/cube.obj @@ -0,0 +1,40 @@ +# Blender v2.82 (sub 7) OBJ File: '' +# www.blender.org +mtllib cube.mtl +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vt 0.625000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/4/2 7/6/2 8/7/2 +f 8/8/3 7/9/3 5/10/3 6/11/3 +f 6/12/4 2/13/4 4/5/4 8/14/4 +f 2/13/5 1/1/5 3/4/5 4/5/5 +f 6/11/6 5/10/6 1/1/6 2/13/6 diff --git a/src/main.c b/src/main.c index fc50f41..3eb0acc 100644 --- a/src/main.c +++ b/src/main.c @@ -6,33 +6,42 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/05/09 10:20:09 by charles #+# #+# */ -/* Updated: 2020/05/09 10:39:09 by charles ### ########.fr */ +/* Updated: 2020/05/09 11:08:59 by charles ### ########.fr */ /* */ /* ************************************************************************** */ -#include "libft.h" -#include -#include +#include "scop.h" int main(int argc, char **argv) { - GLFWwindow* window; + /* GLFWwindow *window; */ + float *buffer; - if (!glfwInit()) - return -1; - window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); - if (!window) + if (argc != 2) { - glfwTerminate(); - return -1; + ft_putstr("Usage: "); + ft_putstr(argv[0]); + ft_putendl(" [obj file]"); + return (1); } - glfwMakeContextCurrent(window); - while (!glfwWindowShouldClose(window)) - { - glClear(GL_COLOR_BUFFER_BIT); - glfwSwapBuffers(window); - glfwPollEvents(); - } - glfwTerminate(); + if ((buffer = parse(argv[1])) == NULL) + return 1; + + /* if (!glfwInit()) */ + /* return 1; */ + /* window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); */ + /* if (window == NULL) */ + /* { */ + /* glfwTerminate(); */ + /* return 1; */ + /* } */ + /* glfwMakeContextCurrent(window); */ + /* while (!glfwWindowShouldClose(window)) */ + /* { */ + /* glClear(GL_COLOR_BUFFER_BIT); */ + /* glfwSwapBuffers(window); */ + /* glfwPollEvents(); */ + /* } */ + /* glfwTerminate(); */ return 0; } diff --git a/src/parse.c b/src/parse.c new file mode 100644 index 0000000..4add0b3 --- /dev/null +++ b/src/parse.c @@ -0,0 +1,83 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* parse.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: charles +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/05/09 11:02:00 by charles #+# #+# */ +/* Updated: 2020/05/09 12:07:36 by charles ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "scop.h" + +#define SCOP_VEC_DEFAULT_SIZE 32 + +static int st_parse_line(char *line, t_ftvec *vertices, t_ftvec *indices) +{ + unsigned int tmp; + float tmpf; + + if (*line == 'v') + { + tmpf = ft_strtof(line, &line); + ft_vecpush(indices, *((void**)&tmp)); + tmpf = ft_strtof(line, &line); + ft_vecpush(indices, *((void**)&tmp)); + tmpf = ft_strtof(line, &line); + ft_vecpush(indices, *((void**)&tmp)); + } + if (*line == 'f') + { + tmp = ft_strtol(line, &line, 10); + ft_vecpush(indices, *((void**)&tmp)); + tmp = ft_strtol(line, &line, 10); + ft_vecpush(indices, *((void**)&tmp)); + tmp = ft_strtol(line, &line, 10); + ft_vecpush(indices, *((void**)&tmp)); + } + + + return (0); +} + +static int st_parse_file(int fd, t_ftvec *vertices, t_ftvec *indices) +{ + char *line; + int ret; + + while ((ret = ft_getline(fd, &line)) == FT_LINE) + { + ret = st_parse_line(line, vertices, indices); + free(line); + if (ret == -1) + break ; + } + if (ret == FT_ERROR) + return (-1); + if (*line != '\0') + { + free(line); + return (-1); + } + return (0); +} + +int parse(char *filepath, t_object *object) +{ + int fd; + t_ftvec *vertices; + t_ftvec *indices; + + if ((fd = open(filepath, O_RDONLY)) == -1) + return (-1); + if ((vertices = ft_vecnew(SCOP_VEC_DEFAULT_SIZE)) == NULL) + return (-1); + if ((indices = ft_vecnew(SCOP_VEC_DEFAULT_SIZE)) == NULL) + return (-1); + st_parse_file(fd, vertices, indices); + object->vertices = (float*)ft_vectobuf32(vertices); + object->indices = (unsigned int*)ft_vectobuf32(indices); + return (0); +} 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