1page.title=RenderScript Matrix Functions
2
3@jd:body
4
5<div class='renderscript'>
6<h2>Overview</h2>
7<p> These functions let you manipulate square matrices of rank 2x2, 3x3, and 4x4.
8They are particularly useful for graphical transformations and are compatible
9with OpenGL.
10</p>
11
12<p> We use a zero-based index for rows and columns.  E.g. the last element of a
13<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a> is found at (3, 3).
14</p>
15
16<p> RenderScript uses column-major matrices and column-based vectors.  Transforming
17a vector is done by postmultiplying the vector, e.g. <code>(matrix * vector)</code>,
18as provided by <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
19</p>
20
21<p> To create a transformation matrix that performs two transformations at once,
22multiply the two source matrices, with the first transformation as the right
23argument.  E.g. to create a transformation matrix that applies the
24transformation s1 followed by s2, call <code>rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1)</code>.
25This derives from <code>s2 * (s1 * v)</code>, which is <code>(s2 * s1) * v</code>.
26</p>
27
28<p> We have two style of functions to create transformation matrices:
29rsMatrixLoad<i>Transformation</i> and rsMatrix<i>Transformation</i>.  The former
30style simply stores the transformation matrix in the first argument.  The latter
31modifies a pre-existing transformation matrix so that the new transformation
32happens first.  E.g. if you call <a href='rs_matrix.html#android_rs:rsMatrixTranslate'>rsMatrixTranslate</a>() on a matrix that already
33does a scaling, the resulting matrix when applied to a vector will first do the
34translation then the scaling.
35</p>
36<h2>Summary</h2>
37<table class='jd-sumtable'><tbody>
38  <tr><th colspan='2'>Functions</th></tr>
39  <tr class='alt-color api apilevel-1'>
40    <td class='jd-linkcol'>
41      <a href='rs_matrix.html#android_rs:rsExtractFrustumPlanes'>rsExtractFrustumPlanes</a>
42    </td>
43    <td class='jd-descrcol' width='100%'>
44      Compute frustum planes
45    </td>
46  </tr>
47  <tr class='alt-color api apilevel-1'>
48    <td class='jd-linkcol'>
49      <a href='rs_matrix.html#android_rs:rsIsSphereInFrustum'>rsIsSphereInFrustum</a>
50    </td>
51    <td class='jd-descrcol' width='100%'>
52      Checks if a sphere is within the frustum planes
53    </td>
54  </tr>
55  <tr class='alt-color api apilevel-1'>
56    <td class='jd-linkcol'>
57      <a href='rs_matrix.html#android_rs:rsMatrixGet'>rsMatrixGet</a>
58    </td>
59    <td class='jd-descrcol' width='100%'>
60      Get one element
61    </td>
62  </tr>
63  <tr class='alt-color api apilevel-1'>
64    <td class='jd-linkcol'>
65      <a href='rs_matrix.html#android_rs:rsMatrixInverse'>rsMatrixInverse</a>
66    </td>
67    <td class='jd-descrcol' width='100%'>
68      Inverts a matrix in place
69    </td>
70  </tr>
71  <tr class='alt-color api apilevel-1'>
72    <td class='jd-linkcol'>
73      <a href='rs_matrix.html#android_rs:rsMatrixInverseTranspose'>rsMatrixInverseTranspose</a>
74    </td>
75    <td class='jd-descrcol' width='100%'>
76      Inverts and transpose a matrix in place
77    </td>
78  </tr>
79  <tr class='alt-color api apilevel-1'>
80    <td class='jd-linkcol'>
81      <a href='rs_matrix.html#android_rs:rsMatrixLoad'>rsMatrixLoad</a>
82    </td>
83    <td class='jd-descrcol' width='100%'>
84      Load or copy a matrix
85    </td>
86  </tr>
87  <tr class='alt-color api apilevel-1'>
88    <td class='jd-linkcol'>
89      <a href='rs_matrix.html#android_rs:rsMatrixLoadFrustum'>rsMatrixLoadFrustum</a>
90    </td>
91    <td class='jd-descrcol' width='100%'>
92      Load a frustum projection matrix
93    </td>
94  </tr>
95  <tr class='alt-color api apilevel-1'>
96    <td class='jd-linkcol'>
97      <a href='rs_matrix.html#android_rs:rsMatrixLoadIdentity'>rsMatrixLoadIdentity</a>
98    </td>
99    <td class='jd-descrcol' width='100%'>
100      Load identity matrix
101    </td>
102  </tr>
103  <tr class='alt-color api apilevel-1'>
104    <td class='jd-linkcol'>
105      <a href='rs_matrix.html#android_rs:rsMatrixLoadMultiply'>rsMatrixLoadMultiply</a>
106    </td>
107    <td class='jd-descrcol' width='100%'>
108      Multiply two matrices
109    </td>
110  </tr>
111  <tr class='alt-color api apilevel-1'>
112    <td class='jd-linkcol'>
113      <a href='rs_matrix.html#android_rs:rsMatrixLoadOrtho'>rsMatrixLoadOrtho</a>
114    </td>
115    <td class='jd-descrcol' width='100%'>
116      Load an orthographic projection matrix
117    </td>
118  </tr>
119  <tr class='alt-color api apilevel-1'>
120    <td class='jd-linkcol'>
121      <a href='rs_matrix.html#android_rs:rsMatrixLoadPerspective'>rsMatrixLoadPerspective</a>
122    </td>
123    <td class='jd-descrcol' width='100%'>
124      Load a perspective projection matrix
125    </td>
126  </tr>
127  <tr class='alt-color api apilevel-1'>
128    <td class='jd-linkcol'>
129      <a href='rs_matrix.html#android_rs:rsMatrixLoadRotate'>rsMatrixLoadRotate</a>
130    </td>
131    <td class='jd-descrcol' width='100%'>
132      Load a rotation matrix
133    </td>
134  </tr>
135  <tr class='alt-color api apilevel-1'>
136    <td class='jd-linkcol'>
137      <a href='rs_matrix.html#android_rs:rsMatrixLoadScale'>rsMatrixLoadScale</a>
138    </td>
139    <td class='jd-descrcol' width='100%'>
140      Load a scaling matrix
141    </td>
142  </tr>
143  <tr class='alt-color api apilevel-1'>
144    <td class='jd-linkcol'>
145      <a href='rs_matrix.html#android_rs:rsMatrixLoadTranslate'>rsMatrixLoadTranslate</a>
146    </td>
147    <td class='jd-descrcol' width='100%'>
148      Load a translation matrix
149    </td>
150  </tr>
151  <tr class='alt-color api apilevel-1'>
152    <td class='jd-linkcol'>
153      <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>
154    </td>
155    <td class='jd-descrcol' width='100%'>
156      Multiply a matrix by a vector or another matrix
157    </td>
158  </tr>
159  <tr class='alt-color api apilevel-1'>
160    <td class='jd-linkcol'>
161      <a href='rs_matrix.html#android_rs:rsMatrixRotate'>rsMatrixRotate</a>
162    </td>
163    <td class='jd-descrcol' width='100%'>
164      Apply a rotation to a transformation matrix
165    </td>
166  </tr>
167  <tr class='alt-color api apilevel-1'>
168    <td class='jd-linkcol'>
169      <a href='rs_matrix.html#android_rs:rsMatrixScale'>rsMatrixScale</a>
170    </td>
171    <td class='jd-descrcol' width='100%'>
172      Apply a scaling to a transformation matrix
173    </td>
174  </tr>
175  <tr class='alt-color api apilevel-1'>
176    <td class='jd-linkcol'>
177      <a href='rs_matrix.html#android_rs:rsMatrixSet'>rsMatrixSet</a>
178    </td>
179    <td class='jd-descrcol' width='100%'>
180      Set one element
181    </td>
182  </tr>
183  <tr class='alt-color api apilevel-1'>
184    <td class='jd-linkcol'>
185      <a href='rs_matrix.html#android_rs:rsMatrixTranslate'>rsMatrixTranslate</a>
186    </td>
187    <td class='jd-descrcol' width='100%'>
188      Apply a translation to a transformation matrix
189    </td>
190  </tr>
191  <tr class='alt-color api apilevel-1'>
192    <td class='jd-linkcol'>
193      <a href='rs_matrix.html#android_rs:rsMatrixTranspose'>rsMatrixTranspose</a>
194    </td>
195    <td class='jd-descrcol' width='100%'>
196      Transpose a matrix place
197    </td>
198  </tr>
199</tbody></table>
200<h2>Functions</h2>
201<a name='android_rs:rsExtractFrustumPlanes'></a>
202<div class='jd-details'>
203  <h4 class='jd-details-title'>
204    <span class='sympad'>rsExtractFrustumPlanes</span>
205    <span class='normal'>: Compute frustum planes</span>
206  </h4>
207  <div class='jd-details-descr'>
208    <table class='jd-tagtable'><tbody>
209      <tr>
210        <td>void rsExtractFrustumPlanes(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* viewProj, <a href='rs_value_types.html#android_rs:float4'>float4</a>* left, <a href='rs_value_types.html#android_rs:float4'>float4</a>* right, <a href='rs_value_types.html#android_rs:float4'>float4</a>* top, <a href='rs_value_types.html#android_rs:float4'>float4</a>* bottom, <a href='rs_value_types.html#android_rs:float4'>float4</a>* near, <a href='rs_value_types.html#android_rs:float4'>float4</a>* far);
211</td>
212        <td>        </td>
213      </tr>
214    </tbody></table>
215  </div>
216  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
217    <table class='jd-tagtable'><tbody>
218    <tr><th>viewProj</th><td>Matrix to extract planes from.</td></tr>
219    <tr><th>left</th><td>Left plane.</td></tr>
220    <tr><th>right</th><td>Right plane.</td></tr>
221    <tr><th>top</th><td>Top plane.</td></tr>
222    <tr><th>bottom</th><td>Bottom plane.</td></tr>
223    <tr><th>near</th><td>Near plane.</td></tr>
224    <tr><th>far</th><td>Far plane.</td></tr>
225    </tbody></table>
226  </div>
227  <div class='jd-tagdata jd-tagdescr'>
228<p> Computes 6 frustum planes from the view projection matrix
229</p>
230  </div>
231</div>
232
233<a name='android_rs:rsIsSphereInFrustum'></a>
234<div class='jd-details'>
235  <h4 class='jd-details-title'>
236    <span class='sympad'>rsIsSphereInFrustum</span>
237    <span class='normal'>: Checks if a sphere is within the frustum planes</span>
238  </h4>
239  <div class='jd-details-descr'>
240    <table class='jd-tagtable'><tbody>
241      <tr>
242        <td>bool rsIsSphereInFrustum(<a href='rs_value_types.html#android_rs:float4'>float4</a>* sphere, <a href='rs_value_types.html#android_rs:float4'>float4</a>* left, <a href='rs_value_types.html#android_rs:float4'>float4</a>* right, <a href='rs_value_types.html#android_rs:float4'>float4</a>* top, <a href='rs_value_types.html#android_rs:float4'>float4</a>* bottom, <a href='rs_value_types.html#android_rs:float4'>float4</a>* near, <a href='rs_value_types.html#android_rs:float4'>float4</a>* far);
243</td>
244        <td>        </td>
245      </tr>
246    </tbody></table>
247  </div>
248  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
249    <table class='jd-tagtable'><tbody>
250    <tr><th>sphere</th><td>float4 representing the sphere.</td></tr>
251    <tr><th>left</th><td>Left plane.</td></tr>
252    <tr><th>right</th><td>Right plane.</td></tr>
253    <tr><th>top</th><td>Top plane.</td></tr>
254    <tr><th>bottom</th><td>Bottom plane.</td></tr>
255    <tr><th>near</th><td>Near plane.</td></tr>
256    <tr><th>far</th><td>Far plane.</td></tr>
257    </tbody></table>
258  </div>
259  <div class='jd-tagdata jd-tagdescr'>
260<p> Returns true if the sphere is within the 6 frustum planes.
261</p>
262  </div>
263</div>
264
265<a name='android_rs:rsMatrixGet'></a>
266<div class='jd-details'>
267  <h4 class='jd-details-title'>
268    <span class='sympad'>rsMatrixGet</span>
269    <span class='normal'>: Get one element</span>
270  </h4>
271  <div class='jd-details-descr'>
272    <table class='jd-tagtable'><tbody>
273      <tr>
274        <td>float rsMatrixGet(const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row);
275</td>
276        <td>        </td>
277      </tr>
278      <tr>
279        <td>float rsMatrixGet(const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row);
280</td>
281        <td>        </td>
282      </tr>
283      <tr>
284        <td>float rsMatrixGet(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row);
285</td>
286        <td>        </td>
287      </tr>
288    </tbody></table>
289  </div>
290  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
291    <table class='jd-tagtable'><tbody>
292    <tr><th>m</th><td>Matrix to extract the element from.</td></tr>
293    <tr><th>col</th><td>Zero-based column of the element to be extracted.</td></tr>
294    <tr><th>row</th><td>Zero-based row of the element to extracted.</td></tr>
295    </tbody></table>
296  </div>
297  <div class='jd-tagdata jd-tagdescr'>
298<p> Returns one element of a matrix.
299</p>
300
301<p> <b>Warning:</b> The order of the column and row parameters may be unexpected.
302</p>
303  </div>
304</div>
305
306<a name='android_rs:rsMatrixInverse'></a>
307<div class='jd-details'>
308  <h4 class='jd-details-title'>
309    <span class='sympad'>rsMatrixInverse</span>
310    <span class='normal'>: Inverts a matrix in place</span>
311  </h4>
312  <div class='jd-details-descr'>
313    <table class='jd-tagtable'><tbody>
314      <tr>
315        <td>bool rsMatrixInverse(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
316</td>
317        <td>        </td>
318      </tr>
319    </tbody></table>
320  </div>
321  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
322    <table class='jd-tagtable'><tbody>
323    <tr><th>m</th><td>Matrix to invert.</td></tr>
324    </tbody></table>
325  </div>
326  <div class='jd-tagdata jd-tagdescr'>
327<p> Returns true if the matrix was successfully inverted.
328</p>
329  </div>
330</div>
331
332<a name='android_rs:rsMatrixInverseTranspose'></a>
333<div class='jd-details'>
334  <h4 class='jd-details-title'>
335    <span class='sympad'>rsMatrixInverseTranspose</span>
336    <span class='normal'>: Inverts and transpose a matrix in place</span>
337  </h4>
338  <div class='jd-details-descr'>
339    <table class='jd-tagtable'><tbody>
340      <tr>
341        <td>bool rsMatrixInverseTranspose(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
342</td>
343        <td>        </td>
344      </tr>
345    </tbody></table>
346  </div>
347  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
348    <table class='jd-tagtable'><tbody>
349    <tr><th>m</th><td>Matrix to modify.</td></tr>
350    </tbody></table>
351  </div>
352  <div class='jd-tagdata jd-tagdescr'>
353<p> The matrix is first inverted then transposed. Returns true if the matrix was
354successfully inverted.
355</p>
356  </div>
357</div>
358
359<a name='android_rs:rsMatrixLoad'></a>
360<div class='jd-details'>
361  <h4 class='jd-details-title'>
362    <span class='sympad'>rsMatrixLoad</span>
363    <span class='normal'>: Load or copy a matrix</span>
364  </h4>
365  <div class='jd-details-descr'>
366    <table class='jd-tagtable'><tbody>
367      <tr>
368        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* destination, const float* array);
369</td>
370        <td>        </td>
371      </tr>
372      <tr>
373        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* source);
374</td>
375        <td>        </td>
376      </tr>
377      <tr>
378        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* destination, const float* array);
379</td>
380        <td>        </td>
381      </tr>
382      <tr>
383        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* source);
384</td>
385        <td>        </td>
386      </tr>
387      <tr>
388        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const float* array);
389</td>
390        <td>        </td>
391      </tr>
392      <tr>
393        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* source);
394</td>
395        <td>        </td>
396      </tr>
397      <tr>
398        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* source);
399</td>
400        <td>        </td>
401      </tr>
402      <tr>
403        <td>void rsMatrixLoad(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* destination, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* source);
404</td>
405        <td>        </td>
406      </tr>
407    </tbody></table>
408  </div>
409  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
410    <table class='jd-tagtable'><tbody>
411    <tr><th>destination</th><td>Matrix to set.</td></tr>
412    <tr><th>array</th><td>Array of values to set the matrix to. These arrays should be 4, 9, or 16 floats long, depending on the matrix size.</td></tr>
413    <tr><th>source</th><td>Source matrix.</td></tr>
414    </tbody></table>
415  </div>
416  <div class='jd-tagdata jd-tagdescr'>
417<p> Set the elements of a matrix from an array of floats or from another matrix.
418</p>
419
420<p> If loading from an array, the floats should be in row-major order, i.e. the element a
421<code>row 0, column 0</code> should be first, followed by the element at
422<code>row 0, column 1</code>, etc.
423</p>
424
425<p> If loading from a matrix and the source is smaller than the destination, the rest
426of the destination is filled with elements of the identity matrix.  E.g.
427loading a rs_matrix2x2 into a rs_matrix4x4 will give:
428<table style="max-width:300px">
429<tr><td>m00</td> <td>m01</td> <td>0.0</td> <td>0.0</td></tr>
430<tr><td>m10</td> <td>m11</td> <td>0.0</td> <td>0.0</td></tr>
431<tr><td>0.0</td> <td>0.0</td> <td>1.0</td> <td>0.0</td></tr>
432<tr><td>0.0</td> <td>0.0</td> <td>0.0</td> <td>1.0</td></tr>
433</table>
434</p>
435  </div>
436</div>
437
438<a name='android_rs:rsMatrixLoadFrustum'></a>
439<div class='jd-details'>
440  <h4 class='jd-details-title'>
441    <span class='sympad'>rsMatrixLoadFrustum</span>
442    <span class='normal'>: Load a frustum projection matrix</span>
443  </h4>
444  <div class='jd-details-descr'>
445    <table class='jd-tagtable'><tbody>
446      <tr>
447        <td>void rsMatrixLoadFrustum(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float left, float right, float bottom, float top, float near, float far);
448</td>
449        <td>        </td>
450      </tr>
451    </tbody></table>
452  </div>
453  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
454    <table class='jd-tagtable'><tbody>
455    <tr><th>m</th><td>Matrix to set.</td></tr>
456    <tr><th>left</th><td></td></tr>
457    <tr><th>right</th><td></td></tr>
458    <tr><th>bottom</th><td></td></tr>
459    <tr><th>top</th><td></td></tr>
460    <tr><th>near</th><td></td></tr>
461    <tr><th>far</th><td></td></tr>
462    </tbody></table>
463  </div>
464  <div class='jd-tagdata jd-tagdescr'>
465<p> Constructs a frustum projection matrix, transforming the box identified by
466the six clipping planes <code>left, right, bottom, top, near, far</code>.
467</p>
468
469<p> To apply this projection to a vector, multiply the vector by the created
470matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
471</p>
472  </div>
473</div>
474
475<a name='android_rs:rsMatrixLoadIdentity'></a>
476<div class='jd-details'>
477  <h4 class='jd-details-title'>
478    <span class='sympad'>rsMatrixLoadIdentity</span>
479    <span class='normal'>: Load identity matrix</span>
480  </h4>
481  <div class='jd-details-descr'>
482    <table class='jd-tagtable'><tbody>
483      <tr>
484        <td>void rsMatrixLoadIdentity(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m);
485</td>
486        <td>        </td>
487      </tr>
488      <tr>
489        <td>void rsMatrixLoadIdentity(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m);
490</td>
491        <td>        </td>
492      </tr>
493      <tr>
494        <td>void rsMatrixLoadIdentity(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
495</td>
496        <td>        </td>
497      </tr>
498    </tbody></table>
499  </div>
500  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
501    <table class='jd-tagtable'><tbody>
502    <tr><th>m</th><td>Matrix to set.</td></tr>
503    </tbody></table>
504  </div>
505  <div class='jd-tagdata jd-tagdescr'>
506<p> Set the elements of a matrix to the identity matrix.
507</p>
508  </div>
509</div>
510
511<a name='android_rs:rsMatrixLoadMultiply'></a>
512<div class='jd-details'>
513  <h4 class='jd-details-title'>
514    <span class='sympad'>rsMatrixLoadMultiply</span>
515    <span class='normal'>: Multiply two matrices</span>
516  </h4>
517  <div class='jd-details-descr'>
518    <table class='jd-tagtable'><tbody>
519      <tr>
520        <td>void rsMatrixLoadMultiply(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* lhs, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* rhs);
521</td>
522        <td>        </td>
523      </tr>
524      <tr>
525        <td>void rsMatrixLoadMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* lhs, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* rhs);
526</td>
527        <td>        </td>
528      </tr>
529      <tr>
530        <td>void rsMatrixLoadMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* lhs, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* rhs);
531</td>
532        <td>        </td>
533      </tr>
534    </tbody></table>
535  </div>
536  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
537    <table class='jd-tagtable'><tbody>
538    <tr><th>m</th><td>Matrix to set.</td></tr>
539    <tr><th>lhs</th><td>Left matrix of the product.</td></tr>
540    <tr><th>rhs</th><td>Right matrix of the product.</td></tr>
541    </tbody></table>
542  </div>
543  <div class='jd-tagdata jd-tagdescr'>
544<p> Sets m to the matrix product of <code>lhs * rhs</code>.
545</p>
546
547<p> To combine two 4x4 transformaton matrices, multiply the second transformation matrix
548by the first transformation matrix.  E.g. to create a transformation matrix that applies
549the transformation s1 followed by s2, call <code>rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1)</code>.
550</p>
551
552<p> <b>Warning:</b> Prior to version 21, storing the result back into right matrix is not supported and
553will result in undefined behavior.  Use rsMatrixMulitply instead.   E.g. instead of doing
554rsMatrixLoadMultiply (&amp;m2r, &amp;m2r, &amp;m2l), use rsMatrixMultiply (&amp;m2r, &amp;m2l).
555rsMatrixLoadMultiply (&amp;m2l, &amp;m2r, &amp;m2l) works as expected.
556</p>
557  </div>
558</div>
559
560<a name='android_rs:rsMatrixLoadOrtho'></a>
561<div class='jd-details'>
562  <h4 class='jd-details-title'>
563    <span class='sympad'>rsMatrixLoadOrtho</span>
564    <span class='normal'>: Load an orthographic projection matrix</span>
565  </h4>
566  <div class='jd-details-descr'>
567    <table class='jd-tagtable'><tbody>
568      <tr>
569        <td>void rsMatrixLoadOrtho(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float left, float right, float bottom, float top, float near, float far);
570</td>
571        <td>        </td>
572      </tr>
573    </tbody></table>
574  </div>
575  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
576    <table class='jd-tagtable'><tbody>
577    <tr><th>m</th><td>Matrix to set.</td></tr>
578    <tr><th>left</th><td></td></tr>
579    <tr><th>right</th><td></td></tr>
580    <tr><th>bottom</th><td></td></tr>
581    <tr><th>top</th><td></td></tr>
582    <tr><th>near</th><td></td></tr>
583    <tr><th>far</th><td></td></tr>
584    </tbody></table>
585  </div>
586  <div class='jd-tagdata jd-tagdescr'>
587<p> Constructs an orthographic projection matrix, transforming the box identified by the
588six clipping planes <code>left, right, bottom, top, near, far</code> into a unit cube
589with a corner at <code>(-1, -1, -1)</code> and the opposite at <code>(1, 1, 1)</code>.
590</p>
591
592<p> To apply this projection to a vector, multiply the vector by the created matrix
593using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
594</p>
595
596<p> See https://en.wikipedia.org/wiki/Orthographic_projection .
597</p>
598  </div>
599</div>
600
601<a name='android_rs:rsMatrixLoadPerspective'></a>
602<div class='jd-details'>
603  <h4 class='jd-details-title'>
604    <span class='sympad'>rsMatrixLoadPerspective</span>
605    <span class='normal'>: Load a perspective projection matrix</span>
606  </h4>
607  <div class='jd-details-descr'>
608    <table class='jd-tagtable'><tbody>
609      <tr>
610        <td>void rsMatrixLoadPerspective(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float fovy, float aspect, float near, float far);
611</td>
612        <td>        </td>
613      </tr>
614    </tbody></table>
615  </div>
616  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
617    <table class='jd-tagtable'><tbody>
618    <tr><th>m</th><td>Matrix to set.</td></tr>
619    <tr><th>fovy</th><td>Field of view, in degrees along the Y axis.</td></tr>
620    <tr><th>aspect</th><td>Ratio of x / y.</td></tr>
621    <tr><th>near</th><td>Near clipping plane.</td></tr>
622    <tr><th>far</th><td>Far clipping plane.</td></tr>
623    </tbody></table>
624  </div>
625  <div class='jd-tagdata jd-tagdescr'>
626<p> Constructs a perspective projection matrix, assuming a symmetrical field of view.
627</p>
628
629<p> To apply this projection to a vector, multiply the vector by the created matrix
630using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
631</p>
632  </div>
633</div>
634
635<a name='android_rs:rsMatrixLoadRotate'></a>
636<div class='jd-details'>
637  <h4 class='jd-details-title'>
638    <span class='sympad'>rsMatrixLoadRotate</span>
639    <span class='normal'>: Load a rotation matrix</span>
640  </h4>
641  <div class='jd-details-descr'>
642    <table class='jd-tagtable'><tbody>
643      <tr>
644        <td>void rsMatrixLoadRotate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float rot, float x, float y, float z);
645</td>
646        <td>        </td>
647      </tr>
648    </tbody></table>
649  </div>
650  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
651    <table class='jd-tagtable'><tbody>
652    <tr><th>m</th><td>Matrix to set.</td></tr>
653    <tr><th>rot</th><td>How much rotation to do, in degrees.</td></tr>
654    <tr><th>x</th><td>X component of the vector that is the axis of rotation.</td></tr>
655    <tr><th>y</th><td>Y component of the vector that is the axis of rotation.</td></tr>
656    <tr><th>z</th><td>Z component of the vector that is the axis of rotation.</td></tr>
657    </tbody></table>
658  </div>
659  <div class='jd-tagdata jd-tagdescr'>
660<p> This function creates a rotation matrix.  The axis of rotation is the <code>(x, y, z)</code> vector.
661</p>
662
663<p> To rotate a vector, multiply the vector by the created matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
664</p>
665
666<p> See http://en.wikipedia.org/wiki/Rotation_matrix .
667</p>
668  </div>
669</div>
670
671<a name='android_rs:rsMatrixLoadScale'></a>
672<div class='jd-details'>
673  <h4 class='jd-details-title'>
674    <span class='sympad'>rsMatrixLoadScale</span>
675    <span class='normal'>: Load a scaling matrix</span>
676  </h4>
677  <div class='jd-details-descr'>
678    <table class='jd-tagtable'><tbody>
679      <tr>
680        <td>void rsMatrixLoadScale(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
681</td>
682        <td>        </td>
683      </tr>
684    </tbody></table>
685  </div>
686  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
687    <table class='jd-tagtable'><tbody>
688    <tr><th>m</th><td>Matrix to set.</td></tr>
689    <tr><th>x</th><td>Multiple to scale the x components by.</td></tr>
690    <tr><th>y</th><td>Multiple to scale the y components by.</td></tr>
691    <tr><th>z</th><td>Multiple to scale the z components by.</td></tr>
692    </tbody></table>
693  </div>
694  <div class='jd-tagdata jd-tagdescr'>
695<p> This function creates a scaling matrix, where each component of a vector is multiplied
696by a number.  This number can be negative.
697</p>
698
699<p> To scale a vector, multiply the vector by the created matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
700</p>
701  </div>
702</div>
703
704<a name='android_rs:rsMatrixLoadTranslate'></a>
705<div class='jd-details'>
706  <h4 class='jd-details-title'>
707    <span class='sympad'>rsMatrixLoadTranslate</span>
708    <span class='normal'>: Load a translation matrix</span>
709  </h4>
710  <div class='jd-details-descr'>
711    <table class='jd-tagtable'><tbody>
712      <tr>
713        <td>void rsMatrixLoadTranslate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
714</td>
715        <td>        </td>
716      </tr>
717    </tbody></table>
718  </div>
719  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
720    <table class='jd-tagtable'><tbody>
721    <tr><th>m</th><td>Matrix to set.</td></tr>
722    <tr><th>x</th><td>Number to add to each x component.</td></tr>
723    <tr><th>y</th><td>Number to add to each y component.</td></tr>
724    <tr><th>z</th><td>Number to add to each z component.</td></tr>
725    </tbody></table>
726  </div>
727  <div class='jd-tagdata jd-tagdescr'>
728<p> This function creates a translation matrix, where a number is added to each element of
729a vector.
730</p>
731
732<p> To translate a vector, multiply the vector by the created matrix using
733<a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
734</p>
735  </div>
736</div>
737
738<a name='android_rs:rsMatrixMultiply'></a>
739<div class='jd-details'>
740  <h4 class='jd-details-title'>
741    <span class='sympad'>rsMatrixMultiply</span>
742    <span class='normal'>: Multiply a matrix by a vector or another matrix</span>
743  </h4>
744  <div class='jd-details-descr'>
745    <table class='jd-tagtable'><tbody>
746      <tr>
747        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
748</td>
749        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
750        </td>
751      </tr>
752      <tr>
753        <td><a href='rs_value_types.html#android_rs:float2'>float2</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
754</td>
755        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 and higher</a>
756        </td>
757      </tr>
758      <tr>
759        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
760</td>
761        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
762        </td>
763      </tr>
764      <tr>
765        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
766</td>
767        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
768        </td>
769      </tr>
770      <tr>
771        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
772</td>
773        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 and higher</a>
774        </td>
775      </tr>
776      <tr>
777        <td><a href='rs_value_types.html#android_rs:float3'>float3</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
778</td>
779        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 and higher</a>
780        </td>
781      </tr>
782      <tr>
783        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
784</td>
785        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
786        </td>
787      </tr>
788      <tr>
789        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
790</td>
791        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
792        </td>
793      </tr>
794      <tr>
795        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float4'>float4</a> in);
796</td>
797        <td>    Added in <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14</a>
798        </td>
799      </tr>
800      <tr>
801        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float2'>float2</a> in);
802</td>
803        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 and higher</a>
804        </td>
805      </tr>
806      <tr>
807        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float3'>float3</a> in);
808</td>
809        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 and higher</a>
810        </td>
811      </tr>
812      <tr>
813        <td><a href='rs_value_types.html#android_rs:float4'>float4</a> rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:float4'>float4</a> in);
814</td>
815        <td>    Removed from <a href='http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels'>API level 14 and higher</a>
816        </td>
817      </tr>
818      <tr>
819        <td>void rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* rhs);
820</td>
821        <td>        </td>
822      </tr>
823      <tr>
824        <td>void rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* rhs);
825</td>
826        <td>        </td>
827      </tr>
828      <tr>
829        <td>void rsMatrixMultiply(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, const <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* rhs);
830</td>
831        <td>        </td>
832      </tr>
833    </tbody></table>
834  </div>
835  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
836    <table class='jd-tagtable'><tbody>
837    <tr><th>m</th><td>Left matrix of the product and the matrix to be set.</td></tr>
838    <tr><th>rhs</th><td>Right matrix of the product.</td></tr>
839    <tr><th>in</th><td></td></tr>
840    </tbody></table>
841  </div>
842  <div class='jd-tagdata jd-tagdescr'>
843<p> For the matrix by matrix variant, sets m to the matrix product <code>m * rhs</code>.
844</p>
845
846<p> When combining two 4x4 transformation matrices using this function, the resulting
847matrix will correspond to performing the rhs transformation first followed by
848the original m transformation.
849</p>
850
851<p> For the matrix by vector variant, returns the post-multiplication of the vector
852by the matrix, ie. <code>m * in</code>.
853</p>
854
855<p> When multiplying a float3 to a <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>, the vector is expanded with (1).
856</p>
857
858<p> When multiplying a float2 to a <a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>, the vector is expanded with (0, 1).
859</p>
860
861<p> When multiplying a float2 to a <a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>, the vector is expanded with (0).
862</p>
863
864<p> Starting with API 14, this function takes a const matrix as the first argument.
865</p>
866  </div>
867</div>
868
869<a name='android_rs:rsMatrixRotate'></a>
870<div class='jd-details'>
871  <h4 class='jd-details-title'>
872    <span class='sympad'>rsMatrixRotate</span>
873    <span class='normal'>: Apply a rotation to a transformation matrix</span>
874  </h4>
875  <div class='jd-details-descr'>
876    <table class='jd-tagtable'><tbody>
877      <tr>
878        <td>void rsMatrixRotate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float rot, float x, float y, float z);
879</td>
880        <td>        </td>
881      </tr>
882    </tbody></table>
883  </div>
884  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
885    <table class='jd-tagtable'><tbody>
886    <tr><th>m</th><td>Matrix to modify.</td></tr>
887    <tr><th>rot</th><td>How much rotation to do, in degrees.</td></tr>
888    <tr><th>x</th><td>X component of the vector that is the axis of rotation.</td></tr>
889    <tr><th>y</th><td>Y component of the vector that is the axis of rotation.</td></tr>
890    <tr><th>z</th><td>Z component of the vector that is the axis of rotation.</td></tr>
891    </tbody></table>
892  </div>
893  <div class='jd-tagdata jd-tagdescr'>
894<p> Multiply the matrix m with a rotation matrix.
895</p>
896
897<p> This function modifies a transformation matrix to first do a rotation.  The axis of
898rotation is the <code>(x, y, z)</code> vector.
899</p>
900
901<p> To apply this combined transformation to a vector, multiply the vector by the created
902matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
903</p>
904  </div>
905</div>
906
907<a name='android_rs:rsMatrixScale'></a>
908<div class='jd-details'>
909  <h4 class='jd-details-title'>
910    <span class='sympad'>rsMatrixScale</span>
911    <span class='normal'>: Apply a scaling to a transformation matrix</span>
912  </h4>
913  <div class='jd-details-descr'>
914    <table class='jd-tagtable'><tbody>
915      <tr>
916        <td>void rsMatrixScale(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
917</td>
918        <td>        </td>
919      </tr>
920    </tbody></table>
921  </div>
922  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
923    <table class='jd-tagtable'><tbody>
924    <tr><th>m</th><td>Matrix to modify.</td></tr>
925    <tr><th>x</th><td>Multiple to scale the x components by.</td></tr>
926    <tr><th>y</th><td>Multiple to scale the y components by.</td></tr>
927    <tr><th>z</th><td>Multiple to scale the z components by.</td></tr>
928    </tbody></table>
929  </div>
930  <div class='jd-tagdata jd-tagdescr'>
931<p> Multiply the matrix m with a scaling matrix.
932</p>
933
934<p> This function modifies a transformation matrix to first do a scaling.   When scaling,
935each component of a vector is multiplied by a number.  This number can be negative.
936</p>
937
938<p> To apply this combined transformation to a vector, multiply the vector by the created
939matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
940</p>
941  </div>
942</div>
943
944<a name='android_rs:rsMatrixSet'></a>
945<div class='jd-details'>
946  <h4 class='jd-details-title'>
947    <span class='sympad'>rsMatrixSet</span>
948    <span class='normal'>: Set one element</span>
949  </h4>
950  <div class='jd-details-descr'>
951    <table class='jd-tagtable'><tbody>
952      <tr>
953        <td>void rsMatrixSet(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row, float v);
954</td>
955        <td>        </td>
956      </tr>
957      <tr>
958        <td>void rsMatrixSet(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row, float v);
959</td>
960        <td>        </td>
961      </tr>
962      <tr>
963        <td>void rsMatrixSet(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> col, <a href='rs_value_types.html#android_rs:uint32_t'>uint32_t</a> row, float v);
964</td>
965        <td>        </td>
966      </tr>
967    </tbody></table>
968  </div>
969  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
970    <table class='jd-tagtable'><tbody>
971    <tr><th>m</th><td>Matrix that will be modified.</td></tr>
972    <tr><th>col</th><td>Zero-based column of the element to be set.</td></tr>
973    <tr><th>row</th><td>Zero-based row of the element to be set.</td></tr>
974    <tr><th>v</th><td>Value to set.</td></tr>
975    </tbody></table>
976  </div>
977  <div class='jd-tagdata jd-tagdescr'>
978<p> Set an element of a matrix.
979</p>
980
981<p> <b>Warning:</b> The order of the column and row parameters may be unexpected.
982</p>
983  </div>
984</div>
985
986<a name='android_rs:rsMatrixTranslate'></a>
987<div class='jd-details'>
988  <h4 class='jd-details-title'>
989    <span class='sympad'>rsMatrixTranslate</span>
990    <span class='normal'>: Apply a translation to a transformation matrix</span>
991  </h4>
992  <div class='jd-details-descr'>
993    <table class='jd-tagtable'><tbody>
994      <tr>
995        <td>void rsMatrixTranslate(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m, float x, float y, float z);
996</td>
997        <td>        </td>
998      </tr>
999    </tbody></table>
1000  </div>
1001  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
1002    <table class='jd-tagtable'><tbody>
1003    <tr><th>m</th><td>Matrix to modify.</td></tr>
1004    <tr><th>x</th><td>Number to add to each x component.</td></tr>
1005    <tr><th>y</th><td>Number to add to each y component.</td></tr>
1006    <tr><th>z</th><td>Number to add to each z component.</td></tr>
1007    </tbody></table>
1008  </div>
1009  <div class='jd-tagdata jd-tagdescr'>
1010<p> Multiply the matrix m with a translation matrix.
1011</p>
1012
1013<p> This function modifies a transformation matrix to first do a translation.  When
1014translating, a number is added to each component of a vector.
1015</p>
1016
1017<p> To apply this combined transformation to a vector, multiply the vector by the
1018created matrix using <a href='rs_matrix.html#android_rs:rsMatrixMultiply'>rsMatrixMultiply</a>().
1019</p>
1020  </div>
1021</div>
1022
1023<a name='android_rs:rsMatrixTranspose'></a>
1024<div class='jd-details'>
1025  <h4 class='jd-details-title'>
1026    <span class='sympad'>rsMatrixTranspose</span>
1027    <span class='normal'>: Transpose a matrix place</span>
1028  </h4>
1029  <div class='jd-details-descr'>
1030    <table class='jd-tagtable'><tbody>
1031      <tr>
1032        <td>void rsMatrixTranspose(<a href='rs_value_types.html#android_rs:rs_matrix2x2'>rs_matrix2x2</a>* m);
1033</td>
1034        <td>        </td>
1035      </tr>
1036      <tr>
1037        <td>void rsMatrixTranspose(<a href='rs_value_types.html#android_rs:rs_matrix3x3'>rs_matrix3x3</a>* m);
1038</td>
1039        <td>        </td>
1040      </tr>
1041      <tr>
1042        <td>void rsMatrixTranspose(<a href='rs_value_types.html#android_rs:rs_matrix4x4'>rs_matrix4x4</a>* m);
1043</td>
1044        <td>        </td>
1045      </tr>
1046    </tbody></table>
1047  </div>
1048  <div class='jd-tagdata'>    <h5 class='jd-tagtitle'>Parameters</h5>
1049    <table class='jd-tagtable'><tbody>
1050    <tr><th>m</th><td>Matrix to transpose.</td></tr>
1051    </tbody></table>
1052  </div>
1053  <div class='jd-tagdata jd-tagdescr'>
1054<p> Transpose the matrix m in place.
1055</p>
1056  </div>
1057</div>
1058
1059</div>
1060