mat4_identity, mat4_inverse, minimal setup ready for OpenGL
This commit is contained in:
		
							parent
							
								
									7cc0265f3f
								
							
						
					
					
						commit
						7d9758728b
					
				
							
								
								
									
										7
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										7
									
								
								Makefile
								
								
								
								
							|  | @ -6,7 +6,7 @@ | |||
| #    By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+         #
 | ||||
| #                                                 +#+#+#+#+#+   +#+            #
 | ||||
| #    Created: 2020/12/17 19:47:03 by gbrochar          #+#    #+#              #
 | ||||
| #    Updated: 2020/12/23 17:36:57 by gbrochar         ###   ########.fr        #
 | ||||
| #    Updated: 2020/12/23 20:33:29 by gbrochar         ###   ########.fr        #
 | ||||
| #                                                                              #
 | ||||
| # **************************************************************************** #
 | ||||
| 
 | ||||
|  | @ -17,10 +17,13 @@ SRC_FILE =	main.c \ | |||
| 			parse_line.c \
 | ||||
| 			parse_token.c \
 | ||||
| 			env.c \
 | ||||
| 			run.c \
 | ||||
| 			mat4_transpose.c \
 | ||||
| 			mat4_multiply.c \
 | ||||
| 			mat4_perspective.c \
 | ||||
| 			mat4_lookat.c \
 | ||||
| 			mat4_identity.c \
 | ||||
| 			mat4_inverse.c \
 | ||||
| 
 | ||||
| OBJ_FILE =	$(SRC_FILE:.c=.o) | ||||
| 
 | ||||
|  | @ -34,7 +37,7 @@ SRC =		$(addprefix $(SRC_DIR), $(SRC_FILE)) | |||
| OBJ =		$(addprefix $(OBJ_DIR), $(OBJ_FILE)) | ||||
| INC =		$(addprefix $(INC_DIR), $(INC_FILE)) | ||||
| 
 | ||||
| LIB =		-lm | ||||
| LIB =		-lm -lGL -lglut -lGLEW | ||||
| 
 | ||||
| CC =		gcc | ||||
| 
 | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||
| /*                                                +#+#+#+#+#+   +#+           */ | ||||
| /*   Created: 2020/12/22 20:35:00 by gbrochar          #+#    #+#             */ | ||||
| /*   Updated: 2020/12/23 17:04:47 by gbrochar         ###   ########.fr       */ | ||||
| /*   Updated: 2020/12/23 20:17:35 by gbrochar         ###   ########.fr       */ | ||||
| /*                                                                            */ | ||||
| /* ************************************************************************** */ | ||||
| 
 | ||||
|  | @ -43,4 +43,8 @@ t_mat4						mat4_frustrum( | |||
| 	t_persp_tool tool, double near, double far); | ||||
| t_mat4						mat4_frustrum_tmp(double x, double y, t_vec4 tool); | ||||
| 
 | ||||
| t_mat4						mat4_identity(void); | ||||
| 
 | ||||
| t_mat4						mat4_inverse(t_mat4 m); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||
| /*                                                +#+#+#+#+#+   +#+           */ | ||||
| /*   Created: 2020/12/22 12:08:22 by gbrochar          #+#    #+#             */ | ||||
| /*   Updated: 2020/12/23 17:57:54 by gbrochar         ###   ########.fr       */ | ||||
| /*   Updated: 2020/12/23 20:37:01 by gbrochar         ###   ########.fr       */ | ||||
| /*                                                                            */ | ||||
| /* ************************************************************************** */ | ||||
| 
 | ||||
|  | @ -17,6 +17,9 @@ | |||
| # include <string.h> | ||||
| # include <stdlib.h> | ||||
| 
 | ||||
| # include <GL/glew.h> | ||||
| # include <GL/freeglut.h> | ||||
| 
 | ||||
| # define SUCCESS 0 | ||||
| # define FAILURE -1 | ||||
| # define BREAK 1 | ||||
|  | @ -112,4 +115,6 @@ void						init_camera(t_env *e); | |||
| void						init_object(t_env *e); | ||||
| void						init_env(t_env *e); | ||||
| 
 | ||||
| void						run(t_env *e); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -6,11 +6,12 @@ | |||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||
| /*                                                +#+#+#+#+#+   +#+           */ | ||||
| /*   Created: 2020/12/22 12:02:14 by gbrochar          #+#    #+#             */ | ||||
| /*   Updated: 2020/12/23 17:57:34 by gbrochar         ###   ########.fr       */ | ||||
| /*   Updated: 2020/12/23 20:30:48 by gbrochar         ###   ########.fr       */ | ||||
| /*                                                                            */ | ||||
| /* ************************************************************************** */ | ||||
| 
 | ||||
| #include "scop.h" | ||||
| #include "mat4.h" | ||||
| 
 | ||||
| int				main(int argc, char **argv) | ||||
| { | ||||
|  | @ -18,8 +19,7 @@ int				main(int argc, char **argv) | |||
| 
 | ||||
| 	init_env(&e); | ||||
| 	if (parse(&e, argc, argv) == SUCCESS) | ||||
| 	{ | ||||
| 	} | ||||
| 		run(&e); | ||||
| 	else | ||||
| 	{ | ||||
| 		free_env(&e); | ||||
|  |  | |||
|  | @ -0,0 +1,37 @@ | |||
| /* ************************************************************************** */ | ||||
| /*                                                                            */ | ||||
| /*                                                        :::      ::::::::   */ | ||||
| /*   mat4_identity.c                                    :+:      :+:    :+:   */ | ||||
| /*                                                    +:+ +:+         +:+     */ | ||||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||
| /*                                                +#+#+#+#+#+   +#+           */ | ||||
| /*   Created: 2020/12/23 20:08:04 by gbrochar          #+#    #+#             */ | ||||
| /*   Updated: 2020/12/23 20:16:32 by gbrochar         ###   ########.fr       */ | ||||
| /*                                                                            */ | ||||
| /* ************************************************************************** */ | ||||
| 
 | ||||
| #include "mat4.h" | ||||
| 
 | ||||
| t_mat4			mat4_identity(void) | ||||
| { | ||||
| 	t_mat4		identity; | ||||
| 
 | ||||
| 	identity.data[0] = 1; | ||||
| 	identity.data[1] = 0; | ||||
| 	identity.data[2] = 0; | ||||
| 	identity.data[3] = 0; | ||||
| 	identity.data[4] = 0; | ||||
| 	identity.data[5] = 1; | ||||
| 	identity.data[6] = 0; | ||||
| 	identity.data[7] = 0; | ||||
| 	identity.data[8] = 0; | ||||
| 	identity.data[9] = 0; | ||||
| 	identity.data[10] = 1; | ||||
| 	identity.data[11] = 0; | ||||
| 	identity.data[12] = 0; | ||||
| 	identity.data[13] = 0; | ||||
| 	identity.data[14] = 0; | ||||
| 	identity.data[15] = 1; | ||||
| 
 | ||||
| 	return (identity); | ||||
| } | ||||
|  | @ -0,0 +1,55 @@ | |||
| /* ************************************************************************** */ | ||||
| /*                                                                            */ | ||||
| /*                                                        :::      ::::::::   */ | ||||
| /*   mat4_inverse.c                                     :+:      :+:    :+:   */ | ||||
| /*                                                    +:+ +:+         +:+     */ | ||||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||
| /*                                                +#+#+#+#+#+   +#+           */ | ||||
| /*   Created: 2020/12/23 20:06:45 by gbrochar          #+#    #+#             */ | ||||
| /*   Updated: 2020/12/23 20:26:07 by gbrochar         ###   ########.fr       */ | ||||
| /*                                                                            */ | ||||
| /* ************************************************************************** */ | ||||
| 
 | ||||
| #include "mat4.h" | ||||
| #include "scop.h" | ||||
| 
 | ||||
| t_mat4			mat4_inverse(t_mat4 m) | ||||
| { | ||||
| 	t_mat4		ret; | ||||
| 	double		b00 = m.data[0] * m.data[5] - m.data[1] * m.data[4]; | ||||
| 	double		b01 = m.data[0] * m.data[6] - m.data[2] * m.data[4]; | ||||
| 	double		b02 = m.data[0] * m.data[7] - m.data[3] * m.data[4]; | ||||
| 	double		b03 = m.data[1] * m.data[6] - m.data[2] * m.data[5]; | ||||
| 	double		b04 = m.data[1] * m.data[7] - m.data[3] * m.data[5]; | ||||
| 	double		b05 = m.data[2] * m.data[7] - m.data[3] * m.data[6]; | ||||
| 	double		b06 = m.data[8] * m.data[13] - m.data[9] * m.data[12]; | ||||
| 	double		b07 = m.data[8] * m.data[14] - m.data[10] * m.data[12]; | ||||
| 	double		b08 = m.data[8] * m.data[15] - m.data[11] * m.data[12]; | ||||
| 	double		b09 = m.data[9] * m.data[14] - m.data[10] * m.data[13]; | ||||
| 	double		b10 = m.data[9] * m.data[15] - m.data[11] * m.data[13]; | ||||
| 	double		b11 = m.data[10] * m.data[15] - m.data[11] * m.data[14]; | ||||
| 	double		det =  | ||||
| 		b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; | ||||
| 
 | ||||
| 	if (det - EPSILON < 0 && det + EPSILON > 0) | ||||
| 		return (mat4_identity()); | ||||
| 	det = 1.0 / det; | ||||
| 	ret.data[0] = (m.data[5] * b11 - m.data[6] * b10 + m.data[7] * b09) * det; | ||||
| 	ret.data[1] = (m.data[2] * b10 - m.data[1] * b11 + m.data[3] * b09) * det; | ||||
| 	ret.data[2] = (m.data[13] * b05 - m.data[14] * b04 + m.data[15] * b03) * det; | ||||
| 	ret.data[3] = (m.data[10] * b04 - m.data[9] * b05 + m.data[11] * b03) * det; | ||||
| 	ret.data[4] = (m.data[6] * b08 - m.data[4] * b11 + m.data[7] * b07) * det; | ||||
| 	ret.data[5] = (m.data[0] * b11 - m.data[2] * b08 + m.data[3] * b07) * det; | ||||
| 	ret.data[6] = (m.data[14] * b02 - m.data[12] * b05 + m.data[15] * b01) * det; | ||||
| 	ret.data[7] = (m.data[8] * b05 - m.data[10] * b02 + m.data[11] * b01) * det; | ||||
| 	ret.data[8] = (m.data[4] * b10 - m.data[5] * b08 + m.data[7] * b06) * det; | ||||
| 	ret.data[9] = (m.data[1] * b08 - m.data[0] * b10 + m.data[3] * b06) * det; | ||||
| 	ret.data[10] = (m.data[12] * b04 - m.data[13] * b02 + m.data[15] * b00) * det; | ||||
| 	ret.data[11] = (m.data[9] * b02 - m.data[8] * b04 + m.data[11] * b00) * det; | ||||
| 	ret.data[12] = (m.data[5] * b07 - m.data[4] * b09 + m.data[6] * b06) * det; | ||||
| 	ret.data[13] = (m.data[0] * b09 - m.data[1] * b07 + m.data[2] * b06) * det; | ||||
| 	ret.data[14] = (m.data[13] * b01 - m.data[12] * b03 + m.data[14] * b00) * det; | ||||
| 	ret.data[15] = (m.data[8] * b03 - m.data[9] * b01 + m.data[10] * b00) * det; | ||||
| 
 | ||||
| 	return (ret); | ||||
| } | ||||
|  | @ -6,7 +6,7 @@ | |||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||
| /*                                                +#+#+#+#+#+   +#+           */ | ||||
| /*   Created: 2020/12/22 18:41:28 by gbrochar          #+#    #+#             */ | ||||
| /*   Updated: 2020/12/23 17:57:40 by gbrochar         ###   ########.fr       */ | ||||
| /*   Updated: 2020/12/23 20:31:41 by gbrochar         ###   ########.fr       */ | ||||
| /*                                                                            */ | ||||
| /* ************************************************************************** */ | ||||
| 
 | ||||
|  | @ -62,6 +62,7 @@ void				parse_triangulate(t_buf_i *indices, int vertex_count) | |||
| 		i++; | ||||
| 	} | ||||
| 	parse_append_data_tmp(indices, vertex_count, data_tmp); | ||||
| 	free(data_tmp); | ||||
| } | ||||
| 
 | ||||
| int					parse_line(t_env *e, char *line) | ||||
|  |  | |||
|  | @ -0,0 +1,18 @@ | |||
| /* ************************************************************************** */ | ||||
| /*                                                                            */ | ||||
| /*                                                        :::      ::::::::   */ | ||||
| /*   run.c                                              :+:      :+:    :+:   */ | ||||
| /*                                                    +:+ +:+         +:+     */ | ||||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||
| /*                                                +#+#+#+#+#+   +#+           */ | ||||
| /*   Created: 2020/12/23 19:38:05 by gbrochar          #+#    #+#             */ | ||||
| /*   Updated: 2020/12/23 20:28:50 by gbrochar         ###   ########.fr       */ | ||||
| /*                                                                            */ | ||||
| /* ************************************************************************** */ | ||||
| 
 | ||||
| #include "scop.h" | ||||
| 
 | ||||
| void			run(t_env *e) | ||||
| { | ||||
| 	(void)e; | ||||
| } | ||||
		Loading…
	
		Reference in New Issue