summaryrefslogtreecommitdiff
path: root/libs/cglm/docs/source/affine2d.rst
blob: f12cd597cd499222d32fd50ab917a443706d4ba6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
.. default-domain:: C

2D Affine Transforms
================================================================================

Header: cglm/affine2d.h

2D Transforms uses `2d` suffix for naming. If there is no 2D suffix it is 3D function.

Initialize Transform Matrices
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Functions with **_make** prefix expect you don't have a matrix and they create
a matrix for you. You don't need to pass identity matrix.

But other functions expect you have a matrix and you want to transform them. If
you didn't have any existing matrix you have to initialize matrix to identity
before sending to transfrom functions.

Transforms Order
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

See :ref:`TransformsOrder` to read similar section.


Table of contents (click to go):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Functions:

1. :c:func:`glm_translate2d`
#. :c:func:`glm_translate2d_to`
#. :c:func:`glm_translate2d_x`
#. :c:func:`glm_translate2d_y`
#. :c:func:`glm_translate2d_make`
#. :c:func:`glm_scale2d_to`
#. :c:func:`glm_scale2d_make`
#. :c:func:`glm_scale2d`
#. :c:func:`glm_scale2d_uni`
#. :c:func:`glm_rotate2d_make`
#. :c:func:`glm_rotate2d`
#. :c:func:`glm_rotate2d_to`

.. c:function:: void glm_translate2d(mat3 m, vec2 v)

    translate existing 2d transform matrix by *v* vector and stores result in same matrix

    Parameters:
      | *[in, out]*  **m**    2d affine transfrom
      | *[in]*       **v**    translate vector [x, y]

.. c:function:: void glm_translate2d_to(mat3 m, vec2 v, mat3 dest)

    translate existing 2d transform matrix by *v* vector and store result in dest

    Parameters:
      | *[in]*  **m**    2d affine transfrom
      | *[in]*  **v**    translate vector [x, y]
      | *[out]* **dest** translated matrix

.. c:function:: void glm_translate2d_x(mat3 m, float x)

    translate existing 2d transform matrix by x factor

    Parameters:
      | *[in, out]*  **m**    2d affine transfrom
      | *[in]*       **x**    x factor

.. c:function:: void glm_translate2d_y(mat3 m, float y)

    translate existing 2d transform matrix by y factor

    Parameters:
      | *[in, out]*  **m**    2d affine transfrom
      | *[in]*       **y**    y factor

.. c:function:: void glm_translate2d_make(mat3 m, vec2 v)

    creates NEW translate 2d transform matrix by *v* vector

    Parameters:
      | *[in, out]*  **m**    affine transfrom
      | *[in]*       **v**    translate vector [x, y]

.. c:function:: void glm_scale2d_to(mat3 m, vec2 v, mat3 dest)

    scale existing 2d transform matrix by *v* vector and store result in dest

    Parameters:
      | *[in]*  **m**    affine transfrom
      | *[in]*  **v**    scale vector [x, y]
      | *[out]* **dest** scaled matrix

.. c:function:: void glm_scale2d_make(mat3 m, vec2 v)

    creates NEW 2d scale matrix by *v* vector

    Parameters:
      | *[in, out]*  **m**    affine transfrom
      | *[in]*       **v**    scale vector [x, y]

.. c:function:: void glm_scale2d(mat3 m, vec2 v)

    scales existing 2d transform matrix by *v* vector and stores result in same matrix

    Parameters:
      | *[in, out]*  **m**    affine transfrom
      | *[in]*       **v**    translate vector [x, y]

.. c:function:: void glm_scale2d_uni(mat3 m, float s)

    applies uniform scale to existing 2d transform matrix v = [s, s] and stores result in same matrix

    Parameters:
      | *[in, out]*  **m**  affine transfrom
      | *[in]*       **s**  scale factor

.. c:function:: void glm_rotate2d_make(mat3 m, float angle)

    creates NEW rotation matrix by angle around *Z* axis

    Parameters:
      | *[in, out]*  **m**      affine transfrom
      | *[in]*       **angle**  angle (radians)

.. c:function:: void glm_rotate2d(mat3 m, float angle)

    rotate existing 2d transform matrix around *Z* axis by angle and store result in same matrix

    Parameters:
      | *[in, out]*  **m**      affine transfrom
      | *[in]*       **angle**  angle (radians)

.. c:function:: void glm_rotate2d_to(mat3 m, float angle, mat3 dest)

    rotate existing 2d transform matrix around *Z* axis by angle and store result in dest

    Parameters:
      | *[in]*  **m**      affine transfrom
      | *[in]*  **angle**  angle (radians)
      | *[out]* **dest**   rotated matrix