100 lines
4.0 KiB
C
100 lines
4.0 KiB
C
/*
|
|
* Sweet is a small library for basic math and small matrix operations.
|
|
* Copyright 2014 Luc Girod.
|
|
*
|
|
* This library is free software: you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation, either
|
|
* version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef SWEET_MATRIX_SHORT_H
|
|
#define SWEET_MATRIX_SHORT_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_null3 sweet_matrix_null3
|
|
#define mat_null4 sweet_matrix_null4
|
|
#define identity2 sweet_matrix_identity2
|
|
#define identity3 sweet_matrix_identity3
|
|
#define identity4 sweet_matrix_identity4
|
|
#define ortho_basis2 sweet_matrix_ortho_basis2
|
|
#define ortho_basis3 sweet_matrix_ortho_basis3
|
|
#define ortho_basis3h sweet_matrix_ortho_basis3h
|
|
#define ortho_basis4 sweet_matrix_ortho_basis4
|
|
#define matrix_frustum sweet_matrix_frustum
|
|
#define matrix_perspective sweet_matrix_perspective
|
|
#define matrix_ortho sweet_matrix_ortho
|
|
#define matrix_look_at sweet_matrix_look_at
|
|
#define matrix_look_at_ortho sweet_matrix_look_at_ortho
|
|
#define matrix_quat_rotation3 sweet_matrix_quat_rotation3
|
|
#define matrix_quat_rotation3h sweet_matrix_quat_rotation3h
|
|
#define rotation2 sweet_matrix_rotation2
|
|
#define rotation2h sweet_matrix_rotation2h
|
|
#define rotation3 sweet_matrix_rotation3
|
|
#define rotation3h sweet_matrix_rotation3h
|
|
#define translation3h sweet_matrix_translation3h
|
|
#define translation2h sweet_matrix_translation2h
|
|
#define scale4 sweet_matrix_scale4
|
|
#define scale3 sweet_matrix_scale3
|
|
#define scale2 sweet_matrix_scale2
|
|
#define matrix_texture_bias sweet_matrix_texture_bias
|
|
#define transpose2 sweet_matrix_transpose2
|
|
#define transpose3 sweet_matrix_transpose3
|
|
#define transpose4 sweet_matrix_transpose4
|
|
#define mat_det2 sweet_matrix_det2
|
|
#define mat_det3 sweet_matrix_det3
|
|
#define mat_det4 sweet_matrix_det4
|
|
#define mat_inverse2 sweet_matrix_inverse2
|
|
#define mat_inverse3 sweet_matrix_inverse3
|
|
#define mat_inverse4 sweet_matrix_inverse4
|
|
#define mat_product2 sweet_matrix_product2
|
|
#define mat_product3 sweet_matrix_product3
|
|
#define mat_product4 sweet_matrix_product4
|
|
#define mat_sub3 sweet_matrix_sub3
|
|
#define mat_sub4 sweet_matrix_sub4
|
|
#define mat_column2 sweet_matrix_column2
|
|
#define mat_column3 sweet_matrix_column3
|
|
#define mat_column4 sweet_matrix_column4
|
|
#define mat_mult2 sweet_matrix_mult2
|
|
#define mat_mult3 sweet_matrix_mult3
|
|
#define mat_mult4 sweet_matrix_mult4
|
|
#define mat3_eigen_value sweet_matrix_eigen_value3
|
|
#define mat3_gaussian_elimination sweet_matrix_gaussian_elimination3
|
|
#define mat3_solve sweet_matrix_solve3
|
|
#define mat3_eigen_vector sweet_matrix_eigen_vectors3
|
|
|
|
#endif
|
|
|