Compare commits

..

7 Commits

Author SHA1 Message Date
Recep Aslantas
8cfc98d283 Merge branch 'master' of https://github.com/recp/cglm 2022-10-26 23:15:54 +03:00
Recep Aslantas
074189163f add missing struct affine functions and headers 2022-10-26 23:15:27 +03:00
Recep Aslantas
bfbd9ba1dc add struct affine functions and headers 2022-10-26 23:13:36 +03:00
Recep Aslantas
89cee7912a now working on v0.8.7 2022-10-26 23:12:52 +03:00
Recep Aslantas
da5c66d735 update affine-post.h 2022-10-23 14:27:34 +03:00
Recep Aslantas
c4b45a0917 remove redundant comments 2022-10-23 14:22:16 +03:00
Recep Aslantas
8034073965 Merge pull request #260 from recp/new-affine
new affine transform functions 🚀
2022-10-23 14:06:34 +03:00
13 changed files with 409 additions and 170 deletions

View File

@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.8.2)
project(cglm
VERSION 0.8.6
VERSION 0.8.7
HOMEPAGE_URL https://github.com/recp/cglm
DESCRIPTION "OpenGL Mathematics (glm) for C"
LANGUAGES C

View File

@@ -45,6 +45,8 @@ cglm_HEADERS = include/cglm/version.h \
include/cglm/mat4.h \
include/cglm/mat3.h \
include/cglm/mat2.h \
include/cglm/affine-pre.h \
include/cglm/affine-post.h \
include/cglm/affine.h \
include/cglm/affine-mat.h \
include/cglm/vec2.h \

View File

@@ -7,7 +7,7 @@
#*****************************************************************************
AC_PREREQ([2.69])
AC_INIT([cglm], [0.8.6], [info@recp.me])
AC_INIT([cglm], [0.8.7], [info@recp.me])
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects serial-tests])
# Don't use the default cflags (-O2 -g), we set ours manually in Makefile.am.

View File

@@ -62,9 +62,9 @@ author = u'Recep Aslantas'
# built documents.
#
# The short X.Y version.
version = u'0.8.6'
version = u'0.8.7'
# The full version, including alpha/beta/rc tags.
release = u'0.8.6'
release = u'0.8.7'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@@ -5,12 +5,6 @@
* Full license can be found in the LICENSE file
*/
/*
Functions:
CGLM_INLINE void glm_mul(mat4 m1, mat4 m2, mat4 dest);
CGLM_INLINE void glm_inv_tr(mat4 mat);
*/
#ifndef cglm_affine_post_h
#define cglm_affine_post_h
@@ -40,6 +34,8 @@
* @brief translate existing transform matrix by v vector
* and stores result in same matrix
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in, out] m affine transfrom
* @param[in] v translate vector [x, y, z]
*/
@@ -55,6 +51,8 @@ glm_translated(mat4 m, vec3 v) {
*
* source matrix will remain same
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in] m affine transfrom
* @param[in] v translate vector [x, y, z]
* @param[out] dest translated matrix
@@ -69,6 +67,8 @@ glm_translated_to(mat4 m, vec3 v, mat4 dest) {
/*!
* @brief translate existing transform matrix by x factor
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in, out] m affine transfrom
* @param[in] x x factor
*/
@@ -81,6 +81,8 @@ glm_translated_x(mat4 m, float x) {
/*!
* @brief translate existing transform matrix by y factor
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in, out] m affine transfrom
* @param[in] y y factor
*/
@@ -93,6 +95,8 @@ glm_translated_y(mat4 m, float y) {
/*!
* @brief translate existing transform matrix by z factor
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in, out] m affine transfrom
* @param[in] z z factor
*/
@@ -106,6 +110,8 @@ glm_translated_z(mat4 m, float z) {
* @brief rotate existing transform matrix around X axis by angle
* and store result in dest
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[out] dest rotated matrix
@@ -131,6 +137,8 @@ glm_rotated_x(mat4 m, float angle, mat4 dest) {
* @brief rotate existing transform matrix around Y axis by angle
* and store result in dest
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[out] dest rotated matrix
@@ -156,6 +164,8 @@ glm_rotated_y(mat4 m, float angle, mat4 dest) {
* @brief rotate existing transform matrix around Z axis by angle
* and store result in dest
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[out] dest rotated matrix
@@ -180,6 +190,8 @@ glm_rotated_z(mat4 m, float angle, mat4 dest) {
/*!
* @brief rotate existing transform matrix around given axis by angle
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in, out] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis
@@ -196,6 +208,8 @@ glm_rotated(mat4 m, float angle, vec3 axis) {
* @brief rotate existing transform
* around given axis by angle at given pivot point (rotation center)
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in, out] m affine transfrom
* @param[in] pivot rotation center
* @param[in] angle angle (radians)
@@ -216,6 +230,8 @@ glm_rotated_at(mat4 m, vec3 pivot, float angle, vec3 axis) {
/*!
* @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position)
*
* this is POST transform, applies to existing transform as last transfrom
*
* @param[in, out] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis

View File

@@ -5,12 +5,6 @@
* Full license can be found in the LICENSE file
*/
/*
Functions:
CGLM_INLINE void glm_mul(mat4 m1, mat4 m2, mat4 dest);
CGLM_INLINE void glm_inv_tr(mat4 mat);
*/
#ifndef cglm_affine_pre_h
#define cglm_affine_pre_h

View File

@@ -0,0 +1,184 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
/*
Functions:
CGLM_INLINE mat4s glms_translated(mat4s m, vec3s v);
CGLM_INLINE mat4s glms_translated_x(mat4s m, float x);
CGLM_INLINE mat4s glms_translated_y(mat4s m, float y);
CGLM_INLINE mat4s glms_translated_z(mat4s m, float z);
CGLM_INLINE mat4s glms_rotated_x(mat4s m, float angle);
CGLM_INLINE mat4s glms_rotated_y(mat4s m, float angle);
CGLM_INLINE mat4s glms_rotated_z(mat4s m, float angle);
CGLM_INLINE mat4s glms_rotated(mat4s m, float angle, vec3s axis);
CGLM_INLINE mat4s glms_rotated_at(mat4s m, vec3s pivot, float angle, vec3s axis);
CGLM_INLINE mat4s glms_spinned(mat4s m, float angle, vec3s axis);
*/
#ifndef cglms_affines_post_h
#define cglms_affines_post_h
#include "../common.h"
#include "../types-struct.h"
#include "../affine.h"
#include "vec3.h"
#include "vec4.h"
#include "mat4.h"
/*!
* @brief translate existing transform matrix by v vector
* and stores result in same matrix
*
* @param[in] m affine transfrom
* @param[in] v translate vector [x, y, z]
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translated(mat4s m, vec3s v) {
glm_translated(m.raw, v.raw);
return m;
}
/*!
* @brief translate existing transform matrix by x factor
*
* @param[in] m affine transfrom
* @param[in] x x factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translated_x(mat4s m, float x) {
glm_translated_x(m.raw, x);
return m;
}
/*!
* @brief translate existing transform matrix by y factor
*
* @param[in] m affine transfrom
* @param[in] y y factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translated_y(mat4s m, float y) {
glm_translated_y(m.raw, y);
return m;
}
/*!
* @brief translate existing transform matrix by z factor
*
* @param[in] m affine transfrom
* @param[in] z z factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translated_z(mat4s m, float z) {
glm_translated_z(m.raw, z);
return m;
}
/*!
* @brief rotate existing transform matrix around X axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotated_x(mat4s m, float angle) {
mat4s r;
glm_rotated_x(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around Y axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotated_y(mat4s m, float angle) {
mat4s r;
glm_rotated_y(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around Z axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotated_z(mat4s m, float angle) {
mat4s r;
glm_rotated_z(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around given axis by angle
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_rotated(mat4s m, float angle, vec3s axis) {
glm_rotated(m.raw, angle, axis.raw);
return m;
}
/*!
* @brief rotate existing transform
* around given axis by angle at given pivot point (rotation center)
*
* @param[in] m affine transfrom
* @param[in] pivot rotation center
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_rotated_at(mat4s m, vec3s pivot, float angle, vec3s axis) {
glm_rotated_at(m.raw, pivot.raw, angle, axis.raw);
return m;
}
/*!
* @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position)
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_spinned(mat4s m, float angle, vec3s axis) {
glm_spinned(m.raw, angle, axis.raw);
return m;
}
#endif /* cglms_affines_post_h */

View File

@@ -0,0 +1,184 @@
/*
* Copyright (c), Recep Aslantas.
*
* MIT License (MIT), http://opensource.org/licenses/MIT
* Full license can be found in the LICENSE file
*/
/*
Functions:
CGLM_INLINE mat4s glms_translate(mat4s m, vec3s v);
CGLM_INLINE mat4s glms_translate_x(mat4s m, float x);
CGLM_INLINE mat4s glms_translate_y(mat4s m, float y);
CGLM_INLINE mat4s glms_translate_z(mat4s m, float z);
CGLM_INLINE mat4s glms_rotate_x(mat4s m, float angle);
CGLM_INLINE mat4s glms_rotate_y(mat4s m, float angle);
CGLM_INLINE mat4s glms_rotate_z(mat4s m, float angle);
CGLM_INLINE mat4s glms_rotate(mat4s m, float angle, vec3s axis);
CGLM_INLINE mat4s glms_rotate_at(mat4s m, vec3s pivot, float angle, vec3s axis);
CGLM_INLINE mat4s glms_spin(mat4s m, float angle, vec3s axis);
*/
#ifndef cglms_affines_pre_h
#define cglms_affines_pre_h
#include "../common.h"
#include "../types-struct.h"
#include "../affine.h"
#include "vec3.h"
#include "vec4.h"
#include "mat4.h"
/*!
* @brief translate existing transform matrix by v vector
* and stores result in same matrix
*
* @param[in] m affine transfrom
* @param[in] v translate vector [x, y, z]
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate(mat4s m, vec3s v) {
glm_translate(m.raw, v.raw);
return m;
}
/*!
* @brief translate existing transform matrix by x factor
*
* @param[in] m affine transfrom
* @param[in] x x factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate_x(mat4s m, float x) {
glm_translate_x(m.raw, x);
return m;
}
/*!
* @brief translate existing transform matrix by y factor
*
* @param[in] m affine transfrom
* @param[in] y y factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate_y(mat4s m, float y) {
glm_translate_y(m.raw, y);
return m;
}
/*!
* @brief translate existing transform matrix by z factor
*
* @param[in] m affine transfrom
* @param[in] z z factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate_z(mat4s m, float z) {
glm_translate_z(m.raw, z);
return m;
}
/*!
* @brief rotate existing transform matrix around X axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotate_x(mat4s m, float angle) {
mat4s r;
glm_rotate_x(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around Y axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotate_y(mat4s m, float angle) {
mat4s r;
glm_rotate_y(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around Z axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotate_z(mat4s m, float angle) {
mat4s r;
glm_rotate_z(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around given axis by angle
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_rotate(mat4s m, float angle, vec3s axis) {
glm_rotate(m.raw, angle, axis.raw);
return m;
}
/*!
* @brief rotate existing transform
* around given axis by angle at given pivot point (rotation center)
*
* @param[in] m affine transfrom
* @param[in] pivot rotation center
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_rotate_at(mat4s m, vec3s pivot, float angle, vec3s axis) {
glm_rotate_at(m.raw, pivot.raw, angle, axis.raw);
return m;
}
/*!
* @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position)
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_spin(mat4s m, float angle, vec3s axis) {
glm_spin(m.raw, angle, axis.raw);
return m;
}
#endif /* cglms_affines_pre_h */

View File

@@ -40,63 +40,6 @@
#include "vec4.h"
#include "mat4.h"
/*!
* @brief translate existing transform matrix by v vector
* and stores result in same matrix
*
* @param[in] m affine transfrom
* @param[in] v translate vector [x, y, z]
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate(mat4s m, vec3s v) {
glm_translate(m.raw, v.raw);
return m;
}
/*!
* @brief translate existing transform matrix by x factor
*
* @param[in] m affine transfrom
* @param[in] x x factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate_x(mat4s m, float x) {
glm_translate_x(m.raw, x);
return m;
}
/*!
* @brief translate existing transform matrix by y factor
*
* @param[in] m affine transfrom
* @param[in] y y factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate_y(mat4s m, float y) {
glm_translate_y(m.raw, y);
return m;
}
/*!
* @brief translate existing transform matrix by z factor
*
* @param[in] m affine transfrom
* @param[in] z z factor
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_translate_z(mat4s m, float z) {
glm_translate_z(m.raw, z);
return m;
}
/*!
* @brief creates NEW translate transform matrix by v vector
*
@@ -156,54 +99,6 @@ glms_scale_uni(mat4s m, float s) {
return m;
}
/*!
* @brief rotate existing transform matrix around X axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotate_x(mat4s m, float angle) {
mat4s r;
glm_rotate_x(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around Y axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotate_y(mat4s m, float angle) {
mat4s r;
glm_rotate_y(m.raw, angle, r.raw);
return r;
}
/*!
* @brief rotate existing transform matrix around Z axis by angle
* and store result in dest
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @returns rotated matrix
*/
CGLM_INLINE
mat4s
glms_rotate_z(mat4s m, float angle) {
mat4s r;
glm_rotate_z(m.raw, angle, r.raw);
return r;
}
/*!
* @brief creates NEW rotation matrix by angle and axis
*
@@ -221,38 +116,6 @@ glms_rotate_make(float angle, vec3s axis) {
return m;
}
/*!
* @brief rotate existing transform matrix around given axis by angle
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_rotate(mat4s m, float angle, vec3s axis) {
glm_rotate(m.raw, angle, axis.raw);
return m;
}
/*!
* @brief rotate existing transform
* around given axis by angle at given pivot point (rotation center)
*
* @param[in] m affine transfrom
* @param[in] pivot rotation center
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_rotate_at(mat4s m, vec3s pivot, float angle, vec3s axis) {
glm_rotate_at(m.raw, pivot.raw, angle, axis.raw);
return m;
}
/*!
* @brief creates NEW rotation matrix by angle and axis at given point
*
@@ -274,21 +137,6 @@ glms_rotate_atm(mat4s m, vec3s pivot, float angle, vec3s axis) {
return m;
}
/*!
* @brief rotate existing transform matrix around given axis by angle around self (doesn't affected by position)
*
* @param[in] m affine transfrom
* @param[in] angle angle (radians)
* @param[in] axis axis
* @returns affine transfrom
*/
CGLM_INLINE
mat4s
glms_spin(mat4s m, float angle, vec3s axis) {
glm_spin(m.raw, angle, axis.raw);
return m;
}
/*!
* @brief decompose scale vector
*
@@ -346,4 +194,7 @@ glms_decompose(mat4s m, vec4s * __restrict t, mat4s * __restrict r, vec3s * __re
glm_decompose(m.raw, t->raw, r->raw, s->raw);
}
#include "affine-pre.h"
#include "affine-post.h"
#endif /* cglms_affines_h */

View File

@@ -10,6 +10,6 @@
#define CGLM_VERSION_MAJOR 0
#define CGLM_VERSION_MINOR 8
#define CGLM_VERSION_PATCH 6
#define CGLM_VERSION_PATCH 7
#endif /* cglm_version_h */

View File

@@ -1,5 +1,5 @@
project('cglm', 'c',
version : '0.8.6',
version : '0.8.7',
license : 'mit',
default_options : [
'c_std=c11',

View File

@@ -158,6 +158,8 @@
<ClInclude Include="..\include\cglm\simd\x86.h" />
<ClInclude Include="..\include\cglm\sphere.h" />
<ClInclude Include="..\include\cglm\struct.h" />
<ClInclude Include="..\include\cglm\struct\affine-post.h" />
<ClInclude Include="..\include\cglm\struct\affine-pre.h" />
<ClInclude Include="..\include\cglm\struct\affine.h" />
<ClInclude Include="..\include\cglm\struct\affine2d.h" />
<ClInclude Include="..\include\cglm\struct\box.h" />

View File

@@ -597,5 +597,11 @@
<ClInclude Include="..\include\cglm\affine-pre.h">
<Filter>include\cglm</Filter>
</ClInclude>
<ClInclude Include="..\include\cglm\struct\affine-post.h">
<Filter>include\cglm\struct</Filter>
</ClInclude>
<ClInclude Include="..\include\cglm\struct\affine-pre.h">
<Filter>include\cglm\struct</Filter>
</ClInclude>
</ItemGroup>
</Project>