| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- /*
- * Copyright (c), Recep Aslantas.
- *
- * MIT License (MIT), http://opensource.org/licenses/MIT
- * Full license can be found in the LICENSE file
- */
- /*
- Functions:
- CGLM_INLINE mat3s glms_translate2d(mat3 m, vec2 v)
- CGLM_INLINE mat3s glms_translate2d_x(mat3s m, float x)
- CGLM_INLINE mat3s glms_translate2d_y(mat3s m, float y)
- CGLM_INLINE mat3s glms_translate2d_make(vec2s v)
- CGLM_INLINE mat3s glms_scale2d_make(vec2s v)
- CGLM_INLINE mat3s glms_scale2d(mat3s m, vec2s v)
- CGLM_INLINE mat3s glms_scale2d_uni(mat3s m, float s)
- CGLM_INLINE mat3s glms_rotate2d_make(float angle)
- CGLM_INLINE mat3s glms_rotate2d(mat3s m, float angle)
- CGLM_INLINE mat3s glms_rotate2d_to(mat3s m, float angle)
- */
- #ifndef cglms_affine2ds_h
- #define cglms_affine2ds_h
- #include "../common.h"
- #include "../types-struct.h"
- #include "../affine2d.h"
- #include "vec3.h"
- #include "mat3.h"
- /*!
- * @brief translate existing 2d transform matrix by v vector
- * and stores result in same matrix
- *
- * @param[in] m affine transform
- * @param[in] v translate vector [x, y]
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_translate2d(mat3s m, vec2s v) {
- glm_translate2d(m.raw, v.raw);
- return m;
- }
- /*!
- * @brief translate existing 2d transform matrix by x factor
- *
- * @param[in] m affine transform
- * @param[in] x x factor
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_translate2d_x(mat3s m, float x) {
- glm_translate2d_x(m.raw, x);
- return m;
- }
- /*!
- * @brief translate existing 2d transform matrix by y factor
- *
- * @param[in] m affine transform
- * @param[in] y y factor
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_translate2d_y(mat3s m, float y) {
- glm_translate2d_y(m.raw, y);
- return m;
- }
- /*!
- * @brief creates NEW translate 2d transform matrix by v vector
- *
- * @param[in] v translate vector [x, y]
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_translate2d_make(vec2s v) {
- mat3s m;
- glm_translate2d_make(m.raw, v.raw);
- return m;
- }
- /*!
- * @brief creates NEW 2d scale matrix by v vector
- *
- * @param[in] v scale vector [x, y]
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_scale2d_make(vec2s v) {
- mat3s m;
- glm_scale2d_make(m.raw, v.raw);
- return m;
- }
- /*!
- * @brief scales existing 2d transform matrix by v vector
- * and stores result in same matrix
- *
- * @param[in] m affine transform
- * @param[in] v scale vector [x, y, z]
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_scale2d(mat3s m, vec2s v) {
- mat3s r;
- glm_scale2d_to(m.raw, v.raw, r.raw);
- return r;
- }
- /*!
- * @brief applies uniform scale to existing 2d transform matrix v = [s, s, s]
- * and stores result in same matrix
- *
- * @param[in] m affine transform
- * @param[in] s scale factor
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_scale2d_uni(mat3s m, float s) {
- glm_scale2d_uni(m.raw, s);
- return m;
- }
- /*!
- * @brief creates NEW 2d rotation matrix by angle and axis
- *
- * axis will be normalized so you don't need to normalize it
- *
- * @param[in] angle angle (radians)
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_rotate2d_make(float angle) {
- mat3s m;
- glm_rotate2d_make(m.raw, angle);
- return m;
- }
- /*!
- * @brief rotate existing 2d transform matrix around given axis by angle
- *
- * @param[in] m affine transform
- * @param[in] angle angle (radians)
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_rotate2d(mat3s m, float angle) {
- glm_rotate2d(m.raw, angle);
- return m;
- }
- /*!
- * @brief rotate existing 2d transform matrix around given axis by angle
- *
- * @param[in] m affine transform
- * @param[in] angle angle (radians)
- * @returns affine transform
- */
- CGLM_INLINE
- mat3s
- glms_rotate2d_to(mat3s m, float angle) {
- glm_rotate2d(m.raw, angle);
- return m;
- }
- #endif /* cglms_affine2ds_h */
|