mat4_multiply
This commit is contained in:
		
							parent
							
								
									430092bb1d
								
							
						
					
					
						commit
						c2b5bb8de0
					
				
							
								
								
									
										3
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										3
									
								
								Makefile
								
								
								
								
							|  | @ -6,7 +6,7 @@ | ||||||
| #    By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+         #
 | #    By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+         #
 | ||||||
| #                                                 +#+#+#+#+#+   +#+            #
 | #                                                 +#+#+#+#+#+   +#+            #
 | ||||||
| #    Created: 2020/12/17 19:47:03 by gbrochar          #+#    #+#              #
 | #    Created: 2020/12/17 19:47:03 by gbrochar          #+#    #+#              #
 | ||||||
| #    Updated: 2020/12/22 20:49:38 by gbrochar         ###   ########.fr        #
 | #    Updated: 2020/12/23 10:49:53 by gbrochar         ###   ########.fr        #
 | ||||||
| #                                                                              #
 | #                                                                              #
 | ||||||
| # **************************************************************************** #
 | # **************************************************************************** #
 | ||||||
| 
 | 
 | ||||||
|  | @ -17,6 +17,7 @@ SRC_FILE =	main.c \ | ||||||
| 			parse_line.c \
 | 			parse_line.c \
 | ||||||
| 			env.c \
 | 			env.c \
 | ||||||
| 			mat4_transpose.c \
 | 			mat4_transpose.c \
 | ||||||
|  | 			mat4_multiply.c \
 | ||||||
| 
 | 
 | ||||||
| OBJ_FILE =	$(SRC_FILE:.c=.o) | OBJ_FILE =	$(SRC_FILE:.c=.o) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2020/12/22 20:35:00 by gbrochar          #+#    #+#             */ | /*   Created: 2020/12/22 20:35:00 by gbrochar          #+#    #+#             */ | ||||||
| /*   Updated: 2020/12/22 20:48:29 by gbrochar         ###   ########.fr       */ | /*   Updated: 2020/12/23 10:50:09 by gbrochar         ###   ########.fr       */ | ||||||
| /*                                                                            */ | /*                                                                            */ | ||||||
| /* ************************************************************************** */ | /* ************************************************************************** */ | ||||||
| 
 | 
 | ||||||
|  | @ -20,4 +20,8 @@ struct						s_mat4 | ||||||
| 	double					data[16]; | 	double					data[16]; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | t_mat4						mat4_transpose(t_mat4 m); | ||||||
|  | t_mat4						mat4_multiply(t_mat4 m, t_mat4 rhs); | ||||||
|  | t_mat4						mat4_multiply_tmp(t_mat4 m, t_mat4 rhs); | ||||||
|  | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | @ -0,0 +1,60 @@ | ||||||
|  | /* ************************************************************************** */ | ||||||
|  | /*                                                                            */ | ||||||
|  | /*                                                        :::      ::::::::   */ | ||||||
|  | /*   mat4_mul.c                                         :+:      :+:    :+:   */ | ||||||
|  | /*                                                    +:+ +:+         +:+     */ | ||||||
|  | /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||||
|  | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
|  | /*   Created: 2020/12/23 10:39:09 by gbrochar          #+#    #+#             */ | ||||||
|  | /*   Updated: 2020/12/23 10:49:28 by gbrochar         ###   ########.fr       */ | ||||||
|  | /*                                                                            */ | ||||||
|  | /* ************************************************************************** */ | ||||||
|  | 
 | ||||||
|  | #include "mat4.h" | ||||||
|  | 
 | ||||||
|  | t_mat4			mat4_multiply_tmp(t_mat4 m, t_mat4 rhs) | ||||||
|  | { | ||||||
|  | 	t_mat4		out; | ||||||
|  | 
 | ||||||
|  | 	out.data[0] = rhs.data[0] * m.data[0] + rhs.data[1] * m.data[4] | ||||||
|  | 		+ rhs.data[2] * m.data[8] + rhs.data[3] * m.data[12]; | ||||||
|  | 	out.data[1] = rhs.data[0] * m.data[1] + rhs.data[1] * m.data[5] | ||||||
|  | 		+ rhs.data[2] * m.data[9] + rhs.data[3] * m.data[13]; | ||||||
|  | 	out.data[2] = rhs.data[0] * m.data[2] + rhs.data[1] * m.data[6] | ||||||
|  | 		+ rhs.data[2] * m.data[10] + rhs.data[3] * m.data[14]; | ||||||
|  | 	out.data[3] = rhs.data[0] * m.data[3] + rhs.data[1] * m.data[7] | ||||||
|  | 		+ rhs.data[2] * m.data[11] + rhs.data[3] * m.data[15]; | ||||||
|  | 	out.data[4] = rhs.data[4] * m.data[0] + rhs.data[5] * m.data[4] | ||||||
|  | 		+ rhs.data[6] * m.data[8] + rhs.data[7] * m.data[12]; | ||||||
|  | 	out.data[5] = rhs.data[4] * m.data[1] + rhs.data[5] * m.data[5] | ||||||
|  | 		+ rhs.data[6] * m.data[9] + rhs.data[7] * m.data[13]; | ||||||
|  | 	out.data[6] = rhs.data[4] * m.data[2] + rhs.data[5] * m.data[6] | ||||||
|  | 		+ rhs.data[6] * m.data[10] + rhs.data[7] * m.data[14]; | ||||||
|  | 	out.data[7] = rhs.data[4] * m.data[3] + rhs.data[5] * m.data[7] | ||||||
|  | 		+ rhs.data[6] * m.data[11] + rhs.data[7] * m.data[15]; | ||||||
|  | 	out.data[8] = rhs.data[8] * m.data[0] + rhs.data[9] * m.data[4] | ||||||
|  | 		+ rhs.data[10] * m.data[8] + rhs.data[11] * m.data[12]; | ||||||
|  | 	return (out); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | t_mat4			mat4_multiply(t_mat4 m, t_mat4 rhs) | ||||||
|  | { | ||||||
|  | 	t_mat4		out; | ||||||
|  | 
 | ||||||
|  | 	out = mat4_multiply_tmp(m, rhs); | ||||||
|  | 	out.data[9] = rhs.data[8] * m.data[1] + rhs.data[9] * m.data[5] | ||||||
|  | 		+ rhs.data[10] * m.data[9] + rhs.data[11] * m.data[13]; | ||||||
|  | 	out.data[10] = rhs.data[8] * m.data[2] + rhs.data[9] * m.data[6] | ||||||
|  | 		+ rhs.data[10] * m.data[10] + rhs.data[11] * m.data[14]; | ||||||
|  | 	out.data[11] = rhs.data[8] * m.data[3] + rhs.data[9] * m.data[7] | ||||||
|  | 		+ rhs.data[10] * m.data[11] + rhs.data[11] * m.data[15]; | ||||||
|  | 	out.data[12] = rhs.data[12] * m.data[0] + rhs.data[13] * m.data[4] | ||||||
|  | 		+ rhs.data[14] * m.data[8] + rhs.data[15] * m.data[12]; | ||||||
|  | 	out.data[13] = rhs.data[12] * m.data[1] + rhs.data[13] * m.data[5] | ||||||
|  | 		+ rhs.data[14] * m.data[9] + rhs.data[15] * m.data[13]; | ||||||
|  | 	out.data[14] = rhs.data[12] * m.data[2] + rhs.data[13] * m.data[6] | ||||||
|  | 		+ rhs.data[14] * m.data[10] + rhs.data[15] * m.data[14]; | ||||||
|  | 	out.data[15] = rhs.data[12] * m.data[3] + rhs.data[13] * m.data[7] | ||||||
|  | 		+ rhs.data[14] * m.data[11] + rhs.data[15] * m.data[15]; | ||||||
|  | 	return (out); | ||||||
|  | } | ||||||
|  | @ -6,7 +6,7 @@ | ||||||
| /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | /*   By: gbrochar <gbrochar@student.42.fr>          +#+  +:+       +#+        */ | ||||||
| /*                                                +#+#+#+#+#+   +#+           */ | /*                                                +#+#+#+#+#+   +#+           */ | ||||||
| /*   Created: 2020/12/22 20:34:52 by gbrochar          #+#    #+#             */ | /*   Created: 2020/12/22 20:34:52 by gbrochar          #+#    #+#             */ | ||||||
| /*   Updated: 2020/12/22 20:48:21 by gbrochar         ###   ########.fr       */ | /*   Updated: 2020/12/23 10:50:15 by gbrochar         ###   ########.fr       */ | ||||||
| /*                                                                            */ | /*                                                                            */ | ||||||
| /* ************************************************************************** */ | /* ************************************************************************** */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue