/* * 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 . */ #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_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_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_vector3 #endif