• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
6<title>frameworks/rs/scriptc/rs_matrix.rsh File Reference</title>
7<link href="tabs.css" rel="stylesheet" type="text/css"/>
8<link href="doxygen.css" rel="stylesheet" type="text/css" />
9
10
11
12</head>
13<body>
14<div id="top"><!-- do not remove this div! -->
15
16
17<!-- Generated by Doxygen 1.7.5.1 -->
18  <div id="navrow1" class="tabs">
19    <ul class="tablist">
20      <li><a href="index.html"><span>Overview</span></a></li>
21      <li class="current"><a href="globals.html"><span>Globals</span></a></li>
22      <li><a href="annotated.html"><span>Structs</span></a></li>
23    </ul>
24  </div>
25</div>
26<div class="header">
27  <div class="summary">
28<a href="#func-members">Functions</a>  </div>
29  <div class="headertitle">
30<div class="title">frameworks/rs/scriptc/rs_matrix.rsh File Reference</div>  </div>
31</div>
32<div class="contents">
33<table class="memberdecls">
34<tr><td colspan="2"><h2><a name="func-members"></a>
35Functions</h2></td></tr>
36<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aca88832ed720e301780152c60884393e">rsMatrixSet</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, float v)</td></tr>
37<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a08a247cdf2e70e78310bf04f9ecd5144">rsMatrixSet</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, float v)</td></tr>
38<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#af9707d7be5945bf55ed53683624176ff">rsMatrixSet</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row, float v)</td></tr>
39<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#af26fdbf8b8f0ed5d1b53f62b2aef5110">rsMatrixGet</a> (const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row)</td></tr>
40<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#acfebfc7b97e7282b78cd9c65b791932a">rsMatrixGet</a> (const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row)</td></tr>
41<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a683b4537b98103c50cc66780dfe8cd69">rsMatrixGet</a> (const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> col, <a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> row)</td></tr>
42<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a0ffd9de971cf10d0a663ff565be8d3cc">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
43<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5b31e83553efa947db2198674d5db043">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m)</td></tr>
44<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad2954a5ac11d2370227296be89e92471">rsMatrixLoadIdentity</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m)</td></tr>
45<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac380c4117e047da494a74f0dad20fab3">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const float *v)</td></tr>
46<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aef942535c5d56072125dcf5244970ea2">rsMatrixLoad</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const float *v)</td></tr>
47<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aa327089f7ad9161d7372094163147005">rsMatrixLoad</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const float *v)</td></tr>
48<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5239a3f5f2becd20507d0aa56638ba03">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *v)</td></tr>
49<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a06176acb38405937cb94c835a712a3b3">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *v)</td></tr>
50<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a3a3d0f0053720fb4afb3a3eb32e42a82">rsMatrixLoad</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *v)</td></tr>
51<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a654e5abe095770979d740f7b55382bd0">rsMatrixLoad</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *v)</td></tr>
52<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a5f3697805c794c9c9f2f8cfdde4b9a44">rsMatrixLoad</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *v)</td></tr>
53<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a268032f3ac6d766b1d7fe72a6cb50464">rsMatrixLoadRotate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float rot, float x, float y, float z)</td></tr>
54<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#acaf51d1f9ad5041ce01fbf8b7c5923fd">rsMatrixLoadScale</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
55<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a1b521c8a3d1260fa732cbf0a71af0e74">rsMatrixLoadTranslate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
56<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a79f14c4c0f5ecc1bbd0bf54da8b653ef">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *lhs, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *rhs)</td></tr>
57<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a78872343ea6a5c1a846160ccdc4add52">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *lhs, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *rhs)</td></tr>
58<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ae0dd4755c28fc896626ebf5dc784130f">rsMatrixLoadMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *lhs, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *rhs)</td></tr>
59<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a97953ab2606900a839e5816c619abe66">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *rhs)</td></tr>
60<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ae0b03aeec17ec8b9c5e75f8efb1bdc53">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *rhs)</td></tr>
61<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ab1973ad3efa0ab2d53f466dd9fb190bb">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *rhs)</td></tr>
62<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad5ed05ca4880397fb29615e3c6798de1">rsMatrixRotate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float rot, float x, float y, float z)</td></tr>
63<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a94cc6b22bd1a6c07a9a1c1d21afb392c">rsMatrixScale</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
64<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rsMatrixTranslate</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float x, float y, float z)</td></tr>
65<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4c59884a0e534dbbcdc5655842732d43">rsMatrixLoadOrtho</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float left, float right, float bottom, float top, float near, float far)</td></tr>
66<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ad25760aaf01e95d0055237afab41bbb3">rsMatrixLoadFrustum</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float left, float right, float bottom, float top, float near, float far)</td></tr>
67<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#aa404c34d7478f2921f7415d2da95d02b">rsMatrixLoadPerspective</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, float fovy, float aspect, float near, float far)</td></tr>
68<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a47b6abbf32ffaf77bb13d96c3f05779f">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m, <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> in)</td></tr>
69<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a716bc2d29b80eb25388aba3ba8845aef">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m, <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> in)</td></tr>
70<tr><td class="memItemLeft" align="right" valign="top">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m, <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> in)</td></tr>
71<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a00b6a334ba5ac94d84850f22ec9f4de5">rsMatrixInverse</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
72<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac05080d52da2d99a759ef34fa0655e82">rsMatrixInverseTranspose</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
73<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a88095c70f1550c760844b3e32e41a31a">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *m)</td></tr>
74<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#ac52acb31a705f6c68af8bddea0e79969">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *m)</td></tr>
75<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rs__matrix_8rsh.html#a49164dd4d4e85b212196028b1fd89dc1">rsMatrixTranspose</a> (<a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *m)</td></tr>
76</table>
77<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
78<div class="textblock"><p>Matrix functions. </p>
79<p>These functions let you manipulate square matrices of rank 2x2, 3x3, and 4x4. They are particularly useful for graphical transformations and are compatible with OpenGL.</p>
80<p>A few general notes:</p>
81<ul>
82<li>We use a zero-based index for rows and columns. E.g. the last element of a <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> is found at (3, 3).</li>
83</ul>
84<ul>
85<li>RenderScript uses column-based vectors. Transforming a vector is done by postmultiplying the vector, e.g. <em>(matrix * vector)</em>, as provided by <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</li>
86</ul>
87<ul>
88<li>To create a transformation matrix that performs two transformations at once, multiply the two source matrices, with the first transformation as the right argument. E.g. to create a transformation matrix that applies the transformation <em>s1</em> followed by <em>s2</em>, call rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1). This derives from <em>s2 * (s1 * v)</em>, which is <em>(s2 * s1) * v</em>.</li>
89</ul>
90<ul>
91<li>We have two style of functions to create transformation matrices: rsMatrixLoad<em>Transformation</em> and rsMatrix<em>Transformation</em>. The former style simply stores the transformation matrix in the first argument. The latter modifies a pre-existing transformation matrix so that the new transformation happens first. E.g. if you call <a class="el" href="rs__matrix_8rsh.html#a4df5f9b5bb6044f3c3426f2f58b94405">rsMatrixTranslate</a> on a matrix that already does a scaling, the resulting matrix when applied to a vector will first do the translation then the scaling. </li>
92</ul>
93
94<p>Definition in file <a class="el" href="rs__matrix_8rsh_source.html">rs_matrix.rsh</a>.</p>
95</div><hr/><h2>Function Documentation</h2>
96<a class="anchor" id="af26fdbf8b8f0ed5d1b53f62b2aef5110"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="af26fdbf8b8f0ed5d1b53f62b2aef5110" args="(const rs_matrix4x4 *m, uint32_t col, uint32_t row)" -->
97<div class="memitem">
98<div class="memproto">
99      <table class="memname">
100        <tr>
101          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
102          <td>(</td>
103          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
104          <td class="paramname"><em>m</em>, </td>
105        </tr>
106        <tr>
107          <td class="paramkey"></td>
108          <td></td>
109          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
110          <td class="paramname"><em>col</em>, </td>
111        </tr>
112        <tr>
113          <td class="paramkey"></td>
114          <td></td>
115          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
116          <td class="paramname"><em>row</em>&#160;</td>
117        </tr>
118        <tr>
119          <td></td>
120          <td>)</td>
121          <td></td><td></td>
122        </tr>
123      </table>
124</div>
125<div class="memdoc">
126<p>Returns one element of a matrix.</p>
127<dl><dt><b>Parameters:</b></dt><dd>
128  <table class="params">
129    <tr><td class="paramname">m</td><td>The matrix to extract the element from. </td></tr>
130    <tr><td class="paramname">col</td><td>The zero-based column of the element to be extracted. </td></tr>
131    <tr><td class="paramname">row</td><td>The zero-based row of the element to extracted.</td></tr>
132  </table>
133  </dd>
134</dl>
135<dl class="warning"><dt><b>Warning:</b></dt><dd>The order of the column and row parameters may be unexpected.</dd></dl>
136<dl class="return"><dt><b>Returns:</b></dt><dd>float </dd></dl>
137
138</div>
139</div>
140<a class="anchor" id="acfebfc7b97e7282b78cd9c65b791932a"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="acfebfc7b97e7282b78cd9c65b791932a" args="(const rs_matrix3x3 *m, uint32_t col, uint32_t row)" -->
141<div class="memitem">
142<div class="memproto">
143      <table class="memname">
144        <tr>
145          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
146          <td>(</td>
147          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
148          <td class="paramname"><em>m</em>, </td>
149        </tr>
150        <tr>
151          <td class="paramkey"></td>
152          <td></td>
153          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
154          <td class="paramname"><em>col</em>, </td>
155        </tr>
156        <tr>
157          <td class="paramkey"></td>
158          <td></td>
159          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
160          <td class="paramname"><em>row</em>&#160;</td>
161        </tr>
162        <tr>
163          <td></td>
164          <td>)</td>
165          <td></td><td></td>
166        </tr>
167      </table>
168</div>
169<div class="memdoc">
170<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
171
172</div>
173</div>
174<a class="anchor" id="a683b4537b98103c50cc66780dfe8cd69"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixGet" ref="a683b4537b98103c50cc66780dfe8cd69" args="(const rs_matrix2x2 *m, uint32_t col, uint32_t row)" -->
175<div class="memitem">
176<div class="memproto">
177      <table class="memname">
178        <tr>
179          <td class="memname">_RS_RUNTIME float rsMatrixGet </td>
180          <td>(</td>
181          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
182          <td class="paramname"><em>m</em>, </td>
183        </tr>
184        <tr>
185          <td class="paramkey"></td>
186          <td></td>
187          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
188          <td class="paramname"><em>col</em>, </td>
189        </tr>
190        <tr>
191          <td class="paramkey"></td>
192          <td></td>
193          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
194          <td class="paramname"><em>row</em>&#160;</td>
195        </tr>
196        <tr>
197          <td></td>
198          <td>)</td>
199          <td></td><td></td>
200        </tr>
201      </table>
202</div>
203<div class="memdoc">
204<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
205
206</div>
207</div>
208<a class="anchor" id="a00b6a334ba5ac94d84850f22ec9f4de5"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixInverse" ref="a00b6a334ba5ac94d84850f22ec9f4de5" args="(rs_matrix4x4 *m)" -->
209<div class="memitem">
210<div class="memproto">
211      <table class="memname">
212        <tr>
213          <td class="memname">bool rsMatrixInverse </td>
214          <td>(</td>
215          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
216          <td class="paramname"><em>m</em></td><td>)</td>
217          <td></td>
218        </tr>
219      </table>
220</div>
221<div class="memdoc">
222<p>Inverts a matrix in place.</p>
223<p>Returns true if the matrix was successfully inversed.</p>
224<dl><dt><b>Parameters:</b></dt><dd>
225  <table class="params">
226    <tr><td class="paramname">m</td><td>The matrix to invert. </td></tr>
227  </table>
228  </dd>
229</dl>
230
231</div>
232</div>
233<a class="anchor" id="ac05080d52da2d99a759ef34fa0655e82"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixInverseTranspose" ref="ac05080d52da2d99a759ef34fa0655e82" args="(rs_matrix4x4 *m)" -->
234<div class="memitem">
235<div class="memproto">
236      <table class="memname">
237        <tr>
238          <td class="memname">bool rsMatrixInverseTranspose </td>
239          <td>(</td>
240          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
241          <td class="paramname"><em>m</em></td><td>)</td>
242          <td></td>
243        </tr>
244      </table>
245</div>
246<div class="memdoc">
247<p>Inverts and transpose a matrix in place.</p>
248<p>The matrix is first inverted then transposed. Returns true if the matrix was successfully inverted.</p>
249<dl><dt><b>Parameters:</b></dt><dd>
250  <table class="params">
251    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
252  </table>
253  </dd>
254</dl>
255
256</div>
257</div>
258<a class="anchor" id="ac380c4117e047da494a74f0dad20fab3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="ac380c4117e047da494a74f0dad20fab3" args="(rs_matrix4x4 *m, const float *v)" -->
259<div class="memitem">
260<div class="memproto">
261      <table class="memname">
262        <tr>
263          <td class="memname">void rsMatrixLoad </td>
264          <td>(</td>
265          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
266          <td class="paramname"><em>m</em>, </td>
267        </tr>
268        <tr>
269          <td class="paramkey"></td>
270          <td></td>
271          <td class="paramtype">const float *&#160;</td>
272          <td class="paramname"><em>v</em>&#160;</td>
273        </tr>
274        <tr>
275          <td></td>
276          <td>)</td>
277          <td></td><td></td>
278        </tr>
279      </table>
280</div>
281<div class="memdoc">
282<p>Set the elements of a matrix from an array of floats.</p>
283<p>The array of floats should be in row-major order, i.e. the element a <em>row 0, column 0</em> should be first, followed by the element at <em>row 0, column 1</em>, etc.</p>
284<dl><dt><b>Parameters:</b></dt><dd>
285  <table class="params">
286    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
287    <tr><td class="paramname">v</td><td>The 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>
288  </table>
289  </dd>
290</dl>
291
292</div>
293</div>
294<a class="anchor" id="aef942535c5d56072125dcf5244970ea2"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="aef942535c5d56072125dcf5244970ea2" args="(rs_matrix3x3 *m, const float *v)" -->
295<div class="memitem">
296<div class="memproto">
297      <table class="memname">
298        <tr>
299          <td class="memname">void rsMatrixLoad </td>
300          <td>(</td>
301          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
302          <td class="paramname"><em>m</em>, </td>
303        </tr>
304        <tr>
305          <td class="paramkey"></td>
306          <td></td>
307          <td class="paramtype">const float *&#160;</td>
308          <td class="paramname"><em>v</em>&#160;</td>
309        </tr>
310        <tr>
311          <td></td>
312          <td>)</td>
313          <td></td><td></td>
314        </tr>
315      </table>
316</div>
317<div class="memdoc">
318<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
319
320</div>
321</div>
322<a class="anchor" id="aa327089f7ad9161d7372094163147005"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="aa327089f7ad9161d7372094163147005" args="(rs_matrix2x2 *m, const float *v)" -->
323<div class="memitem">
324<div class="memproto">
325      <table class="memname">
326        <tr>
327          <td class="memname">void rsMatrixLoad </td>
328          <td>(</td>
329          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
330          <td class="paramname"><em>m</em>, </td>
331        </tr>
332        <tr>
333          <td class="paramkey"></td>
334          <td></td>
335          <td class="paramtype">const float *&#160;</td>
336          <td class="paramname"><em>v</em>&#160;</td>
337        </tr>
338        <tr>
339          <td></td>
340          <td>)</td>
341          <td></td><td></td>
342        </tr>
343      </table>
344</div>
345<div class="memdoc">
346<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
347
348</div>
349</div>
350<a class="anchor" id="a5239a3f5f2becd20507d0aa56638ba03"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a5239a3f5f2becd20507d0aa56638ba03" args="(rs_matrix4x4 *m, const rs_matrix4x4 *v)" -->
351<div class="memitem">
352<div class="memproto">
353      <table class="memname">
354        <tr>
355          <td class="memname">void rsMatrixLoad </td>
356          <td>(</td>
357          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
358          <td class="paramname"><em>m</em>, </td>
359        </tr>
360        <tr>
361          <td class="paramkey"></td>
362          <td></td>
363          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
364          <td class="paramname"><em>v</em>&#160;</td>
365        </tr>
366        <tr>
367          <td></td>
368          <td>)</td>
369          <td></td><td></td>
370        </tr>
371      </table>
372</div>
373<div class="memdoc">
374<p>Set the elements of a matrix from another matrix.</p>
375<p>If the source matrix is smaller than the destination, the rest of the destination is filled with elements of the identity matrix. E.g. loading a <a class="el" href="structrs__matrix2x2.html" title="2x2 float matrix">rs_matrix2x2</a> into a <a class="el" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a> will give:</p>
376 <table>
377 <tr><td>m00</td><td>m01</td><td>0.0</td><td>0.0</td></tr>
378 <tr><td>m10</td><td>m11</td><td>0.0</td><td>0.0</td></tr>
379 <tr><td>0.0</td><td>0.0</td><td>1.0</td><td>0.0</td></tr>
380 <tr><td>0.0</td><td>0.0</td><td>0.0</td><td>1.0</td></tr>
381 </table><dl><dt><b>Parameters:</b></dt><dd>
382  <table class="params">
383    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
384    <tr><td class="paramname">v</td><td>The source matrix. </td></tr>
385  </table>
386  </dd>
387</dl>
388
389</div>
390</div>
391<a class="anchor" id="a06176acb38405937cb94c835a712a3b3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a06176acb38405937cb94c835a712a3b3" args="(rs_matrix4x4 *m, const rs_matrix3x3 *v)" -->
392<div class="memitem">
393<div class="memproto">
394      <table class="memname">
395        <tr>
396          <td class="memname">void rsMatrixLoad </td>
397          <td>(</td>
398          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
399          <td class="paramname"><em>m</em>, </td>
400        </tr>
401        <tr>
402          <td class="paramkey"></td>
403          <td></td>
404          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
405          <td class="paramname"><em>v</em>&#160;</td>
406        </tr>
407        <tr>
408          <td></td>
409          <td>)</td>
410          <td></td><td></td>
411        </tr>
412      </table>
413</div>
414<div class="memdoc">
415<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
416
417</div>
418</div>
419<a class="anchor" id="a3a3d0f0053720fb4afb3a3eb32e42a82"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a3a3d0f0053720fb4afb3a3eb32e42a82" args="(rs_matrix4x4 *m, const rs_matrix2x2 *v)" -->
420<div class="memitem">
421<div class="memproto">
422      <table class="memname">
423        <tr>
424          <td class="memname">void rsMatrixLoad </td>
425          <td>(</td>
426          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
427          <td class="paramname"><em>m</em>, </td>
428        </tr>
429        <tr>
430          <td class="paramkey"></td>
431          <td></td>
432          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
433          <td class="paramname"><em>v</em>&#160;</td>
434        </tr>
435        <tr>
436          <td></td>
437          <td>)</td>
438          <td></td><td></td>
439        </tr>
440      </table>
441</div>
442<div class="memdoc">
443<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
444
445</div>
446</div>
447<a class="anchor" id="a654e5abe095770979d740f7b55382bd0"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a654e5abe095770979d740f7b55382bd0" args="(rs_matrix3x3 *m, const rs_matrix3x3 *v)" -->
448<div class="memitem">
449<div class="memproto">
450      <table class="memname">
451        <tr>
452          <td class="memname">void rsMatrixLoad </td>
453          <td>(</td>
454          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
455          <td class="paramname"><em>m</em>, </td>
456        </tr>
457        <tr>
458          <td class="paramkey"></td>
459          <td></td>
460          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
461          <td class="paramname"><em>v</em>&#160;</td>
462        </tr>
463        <tr>
464          <td></td>
465          <td>)</td>
466          <td></td><td></td>
467        </tr>
468      </table>
469</div>
470<div class="memdoc">
471<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
472
473</div>
474</div>
475<a class="anchor" id="a5f3697805c794c9c9f2f8cfdde4b9a44"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoad" ref="a5f3697805c794c9c9f2f8cfdde4b9a44" args="(rs_matrix2x2 *m, const rs_matrix2x2 *v)" -->
476<div class="memitem">
477<div class="memproto">
478      <table class="memname">
479        <tr>
480          <td class="memname">void rsMatrixLoad </td>
481          <td>(</td>
482          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
483          <td class="paramname"><em>m</em>, </td>
484        </tr>
485        <tr>
486          <td class="paramkey"></td>
487          <td></td>
488          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
489          <td class="paramname"><em>v</em>&#160;</td>
490        </tr>
491        <tr>
492          <td></td>
493          <td>)</td>
494          <td></td><td></td>
495        </tr>
496      </table>
497</div>
498<div class="memdoc">
499<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
500
501</div>
502</div>
503<a class="anchor" id="ad25760aaf01e95d0055237afab41bbb3"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadFrustum" ref="ad25760aaf01e95d0055237afab41bbb3" args="(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far)" -->
504<div class="memitem">
505<div class="memproto">
506      <table class="memname">
507        <tr>
508          <td class="memname">void rsMatrixLoadFrustum </td>
509          <td>(</td>
510          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
511          <td class="paramname"><em>m</em>, </td>
512        </tr>
513        <tr>
514          <td class="paramkey"></td>
515          <td></td>
516          <td class="paramtype">float&#160;</td>
517          <td class="paramname"><em>left</em>, </td>
518        </tr>
519        <tr>
520          <td class="paramkey"></td>
521          <td></td>
522          <td class="paramtype">float&#160;</td>
523          <td class="paramname"><em>right</em>, </td>
524        </tr>
525        <tr>
526          <td class="paramkey"></td>
527          <td></td>
528          <td class="paramtype">float&#160;</td>
529          <td class="paramname"><em>bottom</em>, </td>
530        </tr>
531        <tr>
532          <td class="paramkey"></td>
533          <td></td>
534          <td class="paramtype">float&#160;</td>
535          <td class="paramname"><em>top</em>, </td>
536        </tr>
537        <tr>
538          <td class="paramkey"></td>
539          <td></td>
540          <td class="paramtype">float&#160;</td>
541          <td class="paramname"><em>near</em>, </td>
542        </tr>
543        <tr>
544          <td class="paramkey"></td>
545          <td></td>
546          <td class="paramtype">float&#160;</td>
547          <td class="paramname"><em>far</em>&#160;</td>
548        </tr>
549        <tr>
550          <td></td>
551          <td>)</td>
552          <td></td><td></td>
553        </tr>
554      </table>
555</div>
556<div class="memdoc">
557<p>Load a frustum projection matrix.</p>
558<p>Constructs a frustum projection matrix, transforming the box identified by the six clipping planes <em>left, right, bottom, top, near, far</em>.</p>
559<p>To apply this projection to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
560<p>See <a href="https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf">https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf</a></p>
561<dl><dt><b>Parameters:</b></dt><dd>
562  <table class="params">
563    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
564    <tr><td class="paramname">left</td><td></td></tr>
565    <tr><td class="paramname">right</td><td></td></tr>
566    <tr><td class="paramname">bottom</td><td></td></tr>
567    <tr><td class="paramname">top</td><td></td></tr>
568    <tr><td class="paramname">near</td><td></td></tr>
569    <tr><td class="paramname">far</td><td></td></tr>
570  </table>
571  </dd>
572</dl>
573
574</div>
575</div>
576<a class="anchor" id="a0ffd9de971cf10d0a663ff565be8d3cc"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="a0ffd9de971cf10d0a663ff565be8d3cc" args="(rs_matrix4x4 *m)" -->
577<div class="memitem">
578<div class="memproto">
579      <table class="memname">
580        <tr>
581          <td class="memname">void rsMatrixLoadIdentity </td>
582          <td>(</td>
583          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
584          <td class="paramname"><em>m</em></td><td>)</td>
585          <td></td>
586        </tr>
587      </table>
588</div>
589<div class="memdoc">
590<p>Set the elements of a matrix to the identity matrix.</p>
591<dl><dt><b>Parameters:</b></dt><dd>
592  <table class="params">
593    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
594  </table>
595  </dd>
596</dl>
597
598</div>
599</div>
600<a class="anchor" id="a5b31e83553efa947db2198674d5db043"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="a5b31e83553efa947db2198674d5db043" args="(rs_matrix3x3 *m)" -->
601<div class="memitem">
602<div class="memproto">
603      <table class="memname">
604        <tr>
605          <td class="memname">void rsMatrixLoadIdentity </td>
606          <td>(</td>
607          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
608          <td class="paramname"><em>m</em></td><td>)</td>
609          <td></td>
610        </tr>
611      </table>
612</div>
613<div class="memdoc">
614<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
615
616</div>
617</div>
618<a class="anchor" id="ad2954a5ac11d2370227296be89e92471"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadIdentity" ref="ad2954a5ac11d2370227296be89e92471" args="(rs_matrix2x2 *m)" -->
619<div class="memitem">
620<div class="memproto">
621      <table class="memname">
622        <tr>
623          <td class="memname">void rsMatrixLoadIdentity </td>
624          <td>(</td>
625          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
626          <td class="paramname"><em>m</em></td><td>)</td>
627          <td></td>
628        </tr>
629      </table>
630</div>
631<div class="memdoc">
632<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
633
634</div>
635</div>
636<a class="anchor" id="a79f14c4c0f5ecc1bbd0bf54da8b653ef"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="a79f14c4c0f5ecc1bbd0bf54da8b653ef" args="(rs_matrix4x4 *m, const rs_matrix4x4 *lhs, const rs_matrix4x4 *rhs)" -->
637<div class="memitem">
638<div class="memproto">
639      <table class="memname">
640        <tr>
641          <td class="memname">void rsMatrixLoadMultiply </td>
642          <td>(</td>
643          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
644          <td class="paramname"><em>m</em>, </td>
645        </tr>
646        <tr>
647          <td class="paramkey"></td>
648          <td></td>
649          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
650          <td class="paramname"><em>lhs</em>, </td>
651        </tr>
652        <tr>
653          <td class="paramkey"></td>
654          <td></td>
655          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
656          <td class="paramname"><em>rhs</em>&#160;</td>
657        </tr>
658        <tr>
659          <td></td>
660          <td>)</td>
661          <td></td><td></td>
662        </tr>
663      </table>
664</div>
665<div class="memdoc">
666<p>Multiply two matrices.</p>
667<p>Sets <em>m</em> to the matrix product of <em>lhs * rhs</em>.</p>
668<p>To combine two 4x4 transformaton matrices, multiply the second transformation matrix by the first transformation matrix. E.g. to create a transformation matrix that applies the transformation <em>s1</em> followed by <em>s2</em>, call rsMatrixLoadMultiply(&amp;combined, &amp;s2, &amp;s1).</p>
669<dl class="warning"><dt><b>Warning:</b></dt><dd>As of version 21, storing the result back into right matrix is not supported and will result in undefined behavior. Use rsMatrixMulitply instead. E.g. instead of doing rsMatrixLoadMultiply (&amp;m2r, &amp;m2r, &amp;m2l), use rsMatrixMultiply (&amp;m2r, &amp;m2l). rsMatrixLoadMultiply (&amp;m2l, &amp;m2r, &amp;m2l) works as expected.</dd></dl>
670<dl><dt><b>Parameters:</b></dt><dd>
671  <table class="params">
672    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
673    <tr><td class="paramname">lhs</td><td>The left matrix of the product. </td></tr>
674    <tr><td class="paramname">rhs</td><td>The right matrix of the product. </td></tr>
675  </table>
676  </dd>
677</dl>
678
679</div>
680</div>
681<a class="anchor" id="a78872343ea6a5c1a846160ccdc4add52"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="a78872343ea6a5c1a846160ccdc4add52" args="(rs_matrix3x3 *m, const rs_matrix3x3 *lhs, const rs_matrix3x3 *rhs)" -->
682<div class="memitem">
683<div class="memproto">
684      <table class="memname">
685        <tr>
686          <td class="memname">void rsMatrixLoadMultiply </td>
687          <td>(</td>
688          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
689          <td class="paramname"><em>m</em>, </td>
690        </tr>
691        <tr>
692          <td class="paramkey"></td>
693          <td></td>
694          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
695          <td class="paramname"><em>lhs</em>, </td>
696        </tr>
697        <tr>
698          <td class="paramkey"></td>
699          <td></td>
700          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
701          <td class="paramname"><em>rhs</em>&#160;</td>
702        </tr>
703        <tr>
704          <td></td>
705          <td>)</td>
706          <td></td><td></td>
707        </tr>
708      </table>
709</div>
710<div class="memdoc">
711<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
712
713</div>
714</div>
715<a class="anchor" id="ae0dd4755c28fc896626ebf5dc784130f"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadMultiply" ref="ae0dd4755c28fc896626ebf5dc784130f" args="(rs_matrix2x2 *m, const rs_matrix2x2 *lhs, const rs_matrix2x2 *rhs)" -->
716<div class="memitem">
717<div class="memproto">
718      <table class="memname">
719        <tr>
720          <td class="memname">void rsMatrixLoadMultiply </td>
721          <td>(</td>
722          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
723          <td class="paramname"><em>m</em>, </td>
724        </tr>
725        <tr>
726          <td class="paramkey"></td>
727          <td></td>
728          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
729          <td class="paramname"><em>lhs</em>, </td>
730        </tr>
731        <tr>
732          <td class="paramkey"></td>
733          <td></td>
734          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
735          <td class="paramname"><em>rhs</em>&#160;</td>
736        </tr>
737        <tr>
738          <td></td>
739          <td>)</td>
740          <td></td><td></td>
741        </tr>
742      </table>
743</div>
744<div class="memdoc">
745<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
746
747</div>
748</div>
749<a class="anchor" id="a4c59884a0e534dbbcdc5655842732d43"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadOrtho" ref="a4c59884a0e534dbbcdc5655842732d43" args="(rs_matrix4x4 *m, float left, float right, float bottom, float top, float near, float far)" -->
750<div class="memitem">
751<div class="memproto">
752      <table class="memname">
753        <tr>
754          <td class="memname">void rsMatrixLoadOrtho </td>
755          <td>(</td>
756          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
757          <td class="paramname"><em>m</em>, </td>
758        </tr>
759        <tr>
760          <td class="paramkey"></td>
761          <td></td>
762          <td class="paramtype">float&#160;</td>
763          <td class="paramname"><em>left</em>, </td>
764        </tr>
765        <tr>
766          <td class="paramkey"></td>
767          <td></td>
768          <td class="paramtype">float&#160;</td>
769          <td class="paramname"><em>right</em>, </td>
770        </tr>
771        <tr>
772          <td class="paramkey"></td>
773          <td></td>
774          <td class="paramtype">float&#160;</td>
775          <td class="paramname"><em>bottom</em>, </td>
776        </tr>
777        <tr>
778          <td class="paramkey"></td>
779          <td></td>
780          <td class="paramtype">float&#160;</td>
781          <td class="paramname"><em>top</em>, </td>
782        </tr>
783        <tr>
784          <td class="paramkey"></td>
785          <td></td>
786          <td class="paramtype">float&#160;</td>
787          <td class="paramname"><em>near</em>, </td>
788        </tr>
789        <tr>
790          <td class="paramkey"></td>
791          <td></td>
792          <td class="paramtype">float&#160;</td>
793          <td class="paramname"><em>far</em>&#160;</td>
794        </tr>
795        <tr>
796          <td></td>
797          <td>)</td>
798          <td></td><td></td>
799        </tr>
800      </table>
801</div>
802<div class="memdoc">
803<p>Load an orthographic projection matrix.</p>
804<p>Constructs an orthographic projection matrix, transforming the box identified by the six clipping planes <em>left, right, bottom, top, near, far</em> into a unit cube with a corner at <em>(-1, -1, -1)</em> and the opposite at <em>(1, 1, 1)</em>.</p>
805<p>To apply this projection to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
806<p>See <a href="https://en.wikipedia.org/wiki/Orthographic_projection">https://en.wikipedia.org/wiki/Orthographic_projection</a> and <a href="https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf">https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf</a></p>
807<dl><dt><b>Parameters:</b></dt><dd>
808  <table class="params">
809    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
810    <tr><td class="paramname">left</td><td></td></tr>
811    <tr><td class="paramname">right</td><td></td></tr>
812    <tr><td class="paramname">bottom</td><td></td></tr>
813    <tr><td class="paramname">top</td><td></td></tr>
814    <tr><td class="paramname">near</td><td></td></tr>
815    <tr><td class="paramname">far</td><td></td></tr>
816  </table>
817  </dd>
818</dl>
819
820</div>
821</div>
822<a class="anchor" id="aa404c34d7478f2921f7415d2da95d02b"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadPerspective" ref="aa404c34d7478f2921f7415d2da95d02b" args="(rs_matrix4x4 *m, float fovy, float aspect, float near, float far)" -->
823<div class="memitem">
824<div class="memproto">
825      <table class="memname">
826        <tr>
827          <td class="memname">void rsMatrixLoadPerspective </td>
828          <td>(</td>
829          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
830          <td class="paramname"><em>m</em>, </td>
831        </tr>
832        <tr>
833          <td class="paramkey"></td>
834          <td></td>
835          <td class="paramtype">float&#160;</td>
836          <td class="paramname"><em>fovy</em>, </td>
837        </tr>
838        <tr>
839          <td class="paramkey"></td>
840          <td></td>
841          <td class="paramtype">float&#160;</td>
842          <td class="paramname"><em>aspect</em>, </td>
843        </tr>
844        <tr>
845          <td class="paramkey"></td>
846          <td></td>
847          <td class="paramtype">float&#160;</td>
848          <td class="paramname"><em>near</em>, </td>
849        </tr>
850        <tr>
851          <td class="paramkey"></td>
852          <td></td>
853          <td class="paramtype">float&#160;</td>
854          <td class="paramname"><em>far</em>&#160;</td>
855        </tr>
856        <tr>
857          <td></td>
858          <td>)</td>
859          <td></td><td></td>
860        </tr>
861      </table>
862</div>
863<div class="memdoc">
864<p>Load a perspective projection matrix.</p>
865<p>Constructs a perspective projection matrix, assuming a symmetrical field of view.</p>
866<p>To apply this projection to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
867<p>See <a href="https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf">https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf</a></p>
868<dl><dt><b>Parameters:</b></dt><dd>
869  <table class="params">
870    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
871    <tr><td class="paramname">fovy</td><td>Field of view, in degrees along the Y axis. </td></tr>
872    <tr><td class="paramname">aspect</td><td>Ratio of x / y. </td></tr>
873    <tr><td class="paramname">near</td><td>The near clipping plane. </td></tr>
874    <tr><td class="paramname">far</td><td>The far clipping plane. </td></tr>
875  </table>
876  </dd>
877</dl>
878
879</div>
880</div>
881<a class="anchor" id="a268032f3ac6d766b1d7fe72a6cb50464"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadRotate" ref="a268032f3ac6d766b1d7fe72a6cb50464" args="(rs_matrix4x4 *m, float rot, float x, float y, float z)" -->
882<div class="memitem">
883<div class="memproto">
884      <table class="memname">
885        <tr>
886          <td class="memname">void rsMatrixLoadRotate </td>
887          <td>(</td>
888          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
889          <td class="paramname"><em>m</em>, </td>
890        </tr>
891        <tr>
892          <td class="paramkey"></td>
893          <td></td>
894          <td class="paramtype">float&#160;</td>
895          <td class="paramname"><em>rot</em>, </td>
896        </tr>
897        <tr>
898          <td class="paramkey"></td>
899          <td></td>
900          <td class="paramtype">float&#160;</td>
901          <td class="paramname"><em>x</em>, </td>
902        </tr>
903        <tr>
904          <td class="paramkey"></td>
905          <td></td>
906          <td class="paramtype">float&#160;</td>
907          <td class="paramname"><em>y</em>, </td>
908        </tr>
909        <tr>
910          <td class="paramkey"></td>
911          <td></td>
912          <td class="paramtype">float&#160;</td>
913          <td class="paramname"><em>z</em>&#160;</td>
914        </tr>
915        <tr>
916          <td></td>
917          <td>)</td>
918          <td></td><td></td>
919        </tr>
920      </table>
921</div>
922<div class="memdoc">
923<p>Load a rotation matrix.</p>
924<p>This function creates a rotation matrix. The axis of rotation is the <em>(x, y, z)</em> vector.</p>
925<p>To rotate a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
926<p>See <a href="http://en.wikipedia.org/wiki/Rotation_matrix">http://en.wikipedia.org/wiki/Rotation_matrix</a> .</p>
927<dl><dt><b>Parameters:</b></dt><dd>
928  <table class="params">
929    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
930    <tr><td class="paramname">rot</td><td>How much rotation to do, in degrees. </td></tr>
931    <tr><td class="paramname">x</td><td>The x component of the vector that is the axis of rotation. </td></tr>
932    <tr><td class="paramname">y</td><td>The y component of the vector that is the axis of rotation. </td></tr>
933    <tr><td class="paramname">z</td><td>The z component of the vector that is the axis of rotation. </td></tr>
934  </table>
935  </dd>
936</dl>
937
938</div>
939</div>
940<a class="anchor" id="acaf51d1f9ad5041ce01fbf8b7c5923fd"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadScale" ref="acaf51d1f9ad5041ce01fbf8b7c5923fd" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
941<div class="memitem">
942<div class="memproto">
943      <table class="memname">
944        <tr>
945          <td class="memname">void rsMatrixLoadScale </td>
946          <td>(</td>
947          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
948          <td class="paramname"><em>m</em>, </td>
949        </tr>
950        <tr>
951          <td class="paramkey"></td>
952          <td></td>
953          <td class="paramtype">float&#160;</td>
954          <td class="paramname"><em>x</em>, </td>
955        </tr>
956        <tr>
957          <td class="paramkey"></td>
958          <td></td>
959          <td class="paramtype">float&#160;</td>
960          <td class="paramname"><em>y</em>, </td>
961        </tr>
962        <tr>
963          <td class="paramkey"></td>
964          <td></td>
965          <td class="paramtype">float&#160;</td>
966          <td class="paramname"><em>z</em>&#160;</td>
967        </tr>
968        <tr>
969          <td></td>
970          <td>)</td>
971          <td></td><td></td>
972        </tr>
973      </table>
974</div>
975<div class="memdoc">
976<p>Load a scale matrix.</p>
977<p>This function creates a scaling matrix, where each component of a vector is multiplied by a number. This number can be negative.</p>
978<p>To scale a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
979<dl><dt><b>Parameters:</b></dt><dd>
980  <table class="params">
981    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
982    <tr><td class="paramname">x</td><td>The multiple to scale the x components by. </td></tr>
983    <tr><td class="paramname">y</td><td>The multiple to scale the y components by. </td></tr>
984    <tr><td class="paramname">z</td><td>The multiple to scale the z components by. </td></tr>
985  </table>
986  </dd>
987</dl>
988
989</div>
990</div>
991<a class="anchor" id="a1b521c8a3d1260fa732cbf0a71af0e74"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixLoadTranslate" ref="a1b521c8a3d1260fa732cbf0a71af0e74" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
992<div class="memitem">
993<div class="memproto">
994      <table class="memname">
995        <tr>
996          <td class="memname">void rsMatrixLoadTranslate </td>
997          <td>(</td>
998          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
999          <td class="paramname"><em>m</em>, </td>
1000        </tr>
1001        <tr>
1002          <td class="paramkey"></td>
1003          <td></td>
1004          <td class="paramtype">float&#160;</td>
1005          <td class="paramname"><em>x</em>, </td>
1006        </tr>
1007        <tr>
1008          <td class="paramkey"></td>
1009          <td></td>
1010          <td class="paramtype">float&#160;</td>
1011          <td class="paramname"><em>y</em>, </td>
1012        </tr>
1013        <tr>
1014          <td class="paramkey"></td>
1015          <td></td>
1016          <td class="paramtype">float&#160;</td>
1017          <td class="paramname"><em>z</em>&#160;</td>
1018        </tr>
1019        <tr>
1020          <td></td>
1021          <td>)</td>
1022          <td></td><td></td>
1023        </tr>
1024      </table>
1025</div>
1026<div class="memdoc">
1027<p>Load a translation matrix.</p>
1028<p>This function creates a translation matrix, where a number is added to each element of a vector.</p>
1029<p>To translate a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
1030<dl><dt><b>Parameters:</b></dt><dd>
1031  <table class="params">
1032    <tr><td class="paramname">m</td><td>The matrix to set. </td></tr>
1033    <tr><td class="paramname">x</td><td>The number to add to each x component. </td></tr>
1034    <tr><td class="paramname">y</td><td>The number to add to each y component. </td></tr>
1035    <tr><td class="paramname">z</td><td>The number to add to each z component. </td></tr>
1036  </table>
1037  </dd>
1038</dl>
1039
1040</div>
1041</div>
1042<a class="anchor" id="a97953ab2606900a839e5816c619abe66"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a97953ab2606900a839e5816c619abe66" args="(rs_matrix4x4 *m, const rs_matrix4x4 *rhs)" -->
1043<div class="memitem">
1044<div class="memproto">
1045      <table class="memname">
1046        <tr>
1047          <td class="memname">void rsMatrixMultiply </td>
1048          <td>(</td>
1049          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1050          <td class="paramname"><em>m</em>, </td>
1051        </tr>
1052        <tr>
1053          <td class="paramkey"></td>
1054          <td></td>
1055          <td class="paramtype">const <a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1056          <td class="paramname"><em>rhs</em>&#160;</td>
1057        </tr>
1058        <tr>
1059          <td></td>
1060          <td>)</td>
1061          <td></td><td></td>
1062        </tr>
1063      </table>
1064</div>
1065<div class="memdoc">
1066<p>Multiply a matrix into another one.</p>
1067<p>Sets <em>m</em> to the matrix product <em>m * rhs</em>.</p>
1068<p>When combining two 4x4 transformation matrices using this function, the resulting matrix will correspond to performing the <em>rhs</em> transformation first followed by the original <em>m</em> transformation.</p>
1069<dl><dt><b>Parameters:</b></dt><dd>
1070  <table class="params">
1071    <tr><td class="paramname">m</td><td>The left matrix of the product and the matrix to be set. </td></tr>
1072    <tr><td class="paramname">rhs</td><td>The right matrix of the product. </td></tr>
1073  </table>
1074  </dd>
1075</dl>
1076
1077</div>
1078</div>
1079<a class="anchor" id="ae0b03aeec17ec8b9c5e75f8efb1bdc53"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="ae0b03aeec17ec8b9c5e75f8efb1bdc53" args="(rs_matrix3x3 *m, const rs_matrix3x3 *rhs)" -->
1080<div class="memitem">
1081<div class="memproto">
1082      <table class="memname">
1083        <tr>
1084          <td class="memname">void rsMatrixMultiply </td>
1085          <td>(</td>
1086          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
1087          <td class="paramname"><em>m</em>, </td>
1088        </tr>
1089        <tr>
1090          <td class="paramkey"></td>
1091          <td></td>
1092          <td class="paramtype">const <a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
1093          <td class="paramname"><em>rhs</em>&#160;</td>
1094        </tr>
1095        <tr>
1096          <td></td>
1097          <td>)</td>
1098          <td></td><td></td>
1099        </tr>
1100      </table>
1101</div>
1102<div class="memdoc">
1103<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1104
1105</div>
1106</div>
1107<a class="anchor" id="ab1973ad3efa0ab2d53f466dd9fb190bb"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="ab1973ad3efa0ab2d53f466dd9fb190bb" args="(rs_matrix2x2 *m, const rs_matrix2x2 *rhs)" -->
1108<div class="memitem">
1109<div class="memproto">
1110      <table class="memname">
1111        <tr>
1112          <td class="memname">void rsMatrixMultiply </td>
1113          <td>(</td>
1114          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
1115          <td class="paramname"><em>m</em>, </td>
1116        </tr>
1117        <tr>
1118          <td class="paramkey"></td>
1119          <td></td>
1120          <td class="paramtype">const <a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
1121          <td class="paramname"><em>rhs</em>&#160;</td>
1122        </tr>
1123        <tr>
1124          <td></td>
1125          <td>)</td>
1126          <td></td><td></td>
1127        </tr>
1128      </table>
1129</div>
1130<div class="memdoc">
1131<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1132
1133</div>
1134</div>
1135<a class="anchor" id="a47b6abbf32ffaf77bb13d96c3f05779f"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a47b6abbf32ffaf77bb13d96c3f05779f" args="(rs_matrix4x4 *m, float4 in)" -->
1136<div class="memitem">
1137<div class="memproto">
1138      <table class="memname">
1139        <tr>
1140          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a> rsMatrixMultiply </td>
1141          <td>(</td>
1142          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1143          <td class="paramname"><em>m</em>, </td>
1144        </tr>
1145        <tr>
1146          <td class="paramkey"></td>
1147          <td></td>
1148          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#adb5162dc168ddd471d948faa60b37c5e">float4</a>&#160;</td>
1149          <td class="paramname"><em>in</em>&#160;</td>
1150        </tr>
1151        <tr>
1152          <td></td>
1153          <td>)</td>
1154          <td></td><td></td>
1155        </tr>
1156      </table>
1157</div>
1158<div class="memdoc">
1159<p>Multiply a vector by a matrix.</p>
1160<p>Returns the post-multiplication of the vector by the matrix, ie. <em>m * in</em>.</p>
1161<p>When multiplying a <em>float3</em> to a <em><a class="el" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a></em>, the vector is expanded with (1).</p>
1162<p>When multiplying a <em>float2</em> to a <em><a class="el" href="structrs__matrix4x4.html" title="4x4 float matrix">rs_matrix4x4</a></em>, the vector is expanded with (0, 1).</p>
1163<p>When multiplying a <em>float2</em> to a <em><a class="el" href="structrs__matrix3x3.html" title="3x3 float matrix">rs_matrix3x3</a></em>, the vector is expanded with (0).</p>
1164<p>This function is available in API version 10-13. Starting with API 14, the function takes a const matrix as the first argument.</p>
1165<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1166
1167</div>
1168</div>
1169<a class="anchor" id="a716bc2d29b80eb25388aba3ba8845aef"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a716bc2d29b80eb25388aba3ba8845aef" args="(rs_matrix3x3 *m, float3 in)" -->
1170<div class="memitem">
1171<div class="memproto">
1172      <table class="memname">
1173        <tr>
1174          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a> rsMatrixMultiply </td>
1175          <td>(</td>
1176          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
1177          <td class="paramname"><em>m</em>, </td>
1178        </tr>
1179        <tr>
1180          <td class="paramkey"></td>
1181          <td></td>
1182          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a0046fa0f208d0899adbcf1f8b5aafadd">float3</a>&#160;</td>
1183          <td class="paramname"><em>in</em>&#160;</td>
1184        </tr>
1185        <tr>
1186          <td></td>
1187          <td>)</td>
1188          <td></td><td></td>
1189        </tr>
1190      </table>
1191</div>
1192<div class="memdoc">
1193<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1194
1195</div>
1196</div>
1197<a class="anchor" id="a4d9a8bb7c3f5d67b14fa349bdd531d13"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixMultiply" ref="a4d9a8bb7c3f5d67b14fa349bdd531d13" args="(rs_matrix2x2 *m, float2 in)" -->
1198<div class="memitem">
1199<div class="memproto">
1200      <table class="memname">
1201        <tr>
1202          <td class="memname">_RS_RUNTIME <a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a> rsMatrixMultiply </td>
1203          <td>(</td>
1204          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
1205          <td class="paramname"><em>m</em>, </td>
1206        </tr>
1207        <tr>
1208          <td class="paramkey"></td>
1209          <td></td>
1210          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a5086d0fcb71f916c936af486ccf0dd41">float2</a>&#160;</td>
1211          <td class="paramname"><em>in</em>&#160;</td>
1212        </tr>
1213        <tr>
1214          <td></td>
1215          <td>)</td>
1216          <td></td><td></td>
1217        </tr>
1218      </table>
1219</div>
1220<div class="memdoc">
1221<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1222
1223</div>
1224</div>
1225<a class="anchor" id="ad5ed05ca4880397fb29615e3c6798de1"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixRotate" ref="ad5ed05ca4880397fb29615e3c6798de1" args="(rs_matrix4x4 *m, float rot, float x, float y, float z)" -->
1226<div class="memitem">
1227<div class="memproto">
1228      <table class="memname">
1229        <tr>
1230          <td class="memname">void rsMatrixRotate </td>
1231          <td>(</td>
1232          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1233          <td class="paramname"><em>m</em>, </td>
1234        </tr>
1235        <tr>
1236          <td class="paramkey"></td>
1237          <td></td>
1238          <td class="paramtype">float&#160;</td>
1239          <td class="paramname"><em>rot</em>, </td>
1240        </tr>
1241        <tr>
1242          <td class="paramkey"></td>
1243          <td></td>
1244          <td class="paramtype">float&#160;</td>
1245          <td class="paramname"><em>x</em>, </td>
1246        </tr>
1247        <tr>
1248          <td class="paramkey"></td>
1249          <td></td>
1250          <td class="paramtype">float&#160;</td>
1251          <td class="paramname"><em>y</em>, </td>
1252        </tr>
1253        <tr>
1254          <td class="paramkey"></td>
1255          <td></td>
1256          <td class="paramtype">float&#160;</td>
1257          <td class="paramname"><em>z</em>&#160;</td>
1258        </tr>
1259        <tr>
1260          <td></td>
1261          <td>)</td>
1262          <td></td><td></td>
1263        </tr>
1264      </table>
1265</div>
1266<div class="memdoc">
1267<p>Multiply the matrix <em>m</em> with a rotation matrix.</p>
1268<p>This function modifies a transformation matrix to first do a rotation. The axis of rotation is the <em>(x, y, z)</em> vector.</p>
1269<p>To apply this combined transformation to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
1270<dl><dt><b>Parameters:</b></dt><dd>
1271  <table class="params">
1272    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
1273    <tr><td class="paramname">rot</td><td>How much rotation to do, in degrees. </td></tr>
1274    <tr><td class="paramname">x</td><td>The x component of the vector that is the axis of rotation. </td></tr>
1275    <tr><td class="paramname">y</td><td>The y component of the vector that is the axis of rotation. </td></tr>
1276    <tr><td class="paramname">z</td><td>The z component of the vector that is the axis of rotation. </td></tr>
1277  </table>
1278  </dd>
1279</dl>
1280
1281</div>
1282</div>
1283<a class="anchor" id="a94cc6b22bd1a6c07a9a1c1d21afb392c"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixScale" ref="a94cc6b22bd1a6c07a9a1c1d21afb392c" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
1284<div class="memitem">
1285<div class="memproto">
1286      <table class="memname">
1287        <tr>
1288          <td class="memname">void rsMatrixScale </td>
1289          <td>(</td>
1290          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1291          <td class="paramname"><em>m</em>, </td>
1292        </tr>
1293        <tr>
1294          <td class="paramkey"></td>
1295          <td></td>
1296          <td class="paramtype">float&#160;</td>
1297          <td class="paramname"><em>x</em>, </td>
1298        </tr>
1299        <tr>
1300          <td class="paramkey"></td>
1301          <td></td>
1302          <td class="paramtype">float&#160;</td>
1303          <td class="paramname"><em>y</em>, </td>
1304        </tr>
1305        <tr>
1306          <td class="paramkey"></td>
1307          <td></td>
1308          <td class="paramtype">float&#160;</td>
1309          <td class="paramname"><em>z</em>&#160;</td>
1310        </tr>
1311        <tr>
1312          <td></td>
1313          <td>)</td>
1314          <td></td><td></td>
1315        </tr>
1316      </table>
1317</div>
1318<div class="memdoc">
1319<p>Multiply the matrix <em>m</em> with a scaling matrix.</p>
1320<p>This function modifies a transformation matrix to first do a scaling. When scaling, each component of a vector is multiplied by a number. This number can be negative.</p>
1321<p>To apply this combined transformation to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
1322<dl><dt><b>Parameters:</b></dt><dd>
1323  <table class="params">
1324    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
1325    <tr><td class="paramname">x</td><td>The multiple to scale the x components by. </td></tr>
1326    <tr><td class="paramname">y</td><td>The multiple to scale the y components by. </td></tr>
1327    <tr><td class="paramname">z</td><td>The multiple to scale the z components by. </td></tr>
1328  </table>
1329  </dd>
1330</dl>
1331
1332</div>
1333</div>
1334<a class="anchor" id="aca88832ed720e301780152c60884393e"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="aca88832ed720e301780152c60884393e" args="(rs_matrix4x4 *m, uint32_t col, uint32_t row, float v)" -->
1335<div class="memitem">
1336<div class="memproto">
1337      <table class="memname">
1338        <tr>
1339          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
1340          <td>(</td>
1341          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1342          <td class="paramname"><em>m</em>, </td>
1343        </tr>
1344        <tr>
1345          <td class="paramkey"></td>
1346          <td></td>
1347          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
1348          <td class="paramname"><em>col</em>, </td>
1349        </tr>
1350        <tr>
1351          <td class="paramkey"></td>
1352          <td></td>
1353          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
1354          <td class="paramname"><em>row</em>, </td>
1355        </tr>
1356        <tr>
1357          <td class="paramkey"></td>
1358          <td></td>
1359          <td class="paramtype">float&#160;</td>
1360          <td class="paramname"><em>v</em>&#160;</td>
1361        </tr>
1362        <tr>
1363          <td></td>
1364          <td>)</td>
1365          <td></td><td></td>
1366        </tr>
1367      </table>
1368</div>
1369<div class="memdoc">
1370<p>Set an element of a matrix.</p>
1371<dl><dt><b>Parameters:</b></dt><dd>
1372  <table class="params">
1373    <tr><td class="paramname">m</td><td>The matrix that will be modified. </td></tr>
1374    <tr><td class="paramname">col</td><td>The zero-based column of the element to be set. </td></tr>
1375    <tr><td class="paramname">row</td><td>The zero-based row of the element to be set. </td></tr>
1376    <tr><td class="paramname">v</td><td>The value to set.</td></tr>
1377  </table>
1378  </dd>
1379</dl>
1380<dl class="warning"><dt><b>Warning:</b></dt><dd>The order of the column and row parameters may be unexpected.</dd></dl>
1381<dl class="return"><dt><b>Returns:</b></dt><dd>void </dd></dl>
1382
1383</div>
1384</div>
1385<a class="anchor" id="a08a247cdf2e70e78310bf04f9ecd5144"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="a08a247cdf2e70e78310bf04f9ecd5144" args="(rs_matrix3x3 *m, uint32_t col, uint32_t row, float v)" -->
1386<div class="memitem">
1387<div class="memproto">
1388      <table class="memname">
1389        <tr>
1390          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
1391          <td>(</td>
1392          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
1393          <td class="paramname"><em>m</em>, </td>
1394        </tr>
1395        <tr>
1396          <td class="paramkey"></td>
1397          <td></td>
1398          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
1399          <td class="paramname"><em>col</em>, </td>
1400        </tr>
1401        <tr>
1402          <td class="paramkey"></td>
1403          <td></td>
1404          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
1405          <td class="paramname"><em>row</em>, </td>
1406        </tr>
1407        <tr>
1408          <td class="paramkey"></td>
1409          <td></td>
1410          <td class="paramtype">float&#160;</td>
1411          <td class="paramname"><em>v</em>&#160;</td>
1412        </tr>
1413        <tr>
1414          <td></td>
1415          <td>)</td>
1416          <td></td><td></td>
1417        </tr>
1418      </table>
1419</div>
1420<div class="memdoc">
1421<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1422
1423</div>
1424</div>
1425<a class="anchor" id="af9707d7be5945bf55ed53683624176ff"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixSet" ref="af9707d7be5945bf55ed53683624176ff" args="(rs_matrix2x2 *m, uint32_t col, uint32_t row, float v)" -->
1426<div class="memitem">
1427<div class="memproto">
1428      <table class="memname">
1429        <tr>
1430          <td class="memname">_RS_RUNTIME void rsMatrixSet </td>
1431          <td>(</td>
1432          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
1433          <td class="paramname"><em>m</em>, </td>
1434        </tr>
1435        <tr>
1436          <td class="paramkey"></td>
1437          <td></td>
1438          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
1439          <td class="paramname"><em>col</em>, </td>
1440        </tr>
1441        <tr>
1442          <td class="paramkey"></td>
1443          <td></td>
1444          <td class="paramtype"><a class="el" href="rs__types_8rsh.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a>&#160;</td>
1445          <td class="paramname"><em>row</em>, </td>
1446        </tr>
1447        <tr>
1448          <td class="paramkey"></td>
1449          <td></td>
1450          <td class="paramtype">float&#160;</td>
1451          <td class="paramname"><em>v</em>&#160;</td>
1452        </tr>
1453        <tr>
1454          <td></td>
1455          <td>)</td>
1456          <td></td><td></td>
1457        </tr>
1458      </table>
1459</div>
1460<div class="memdoc">
1461<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1462
1463</div>
1464</div>
1465<a class="anchor" id="a4df5f9b5bb6044f3c3426f2f58b94405"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranslate" ref="a4df5f9b5bb6044f3c3426f2f58b94405" args="(rs_matrix4x4 *m, float x, float y, float z)" -->
1466<div class="memitem">
1467<div class="memproto">
1468      <table class="memname">
1469        <tr>
1470          <td class="memname">void rsMatrixTranslate </td>
1471          <td>(</td>
1472          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1473          <td class="paramname"><em>m</em>, </td>
1474        </tr>
1475        <tr>
1476          <td class="paramkey"></td>
1477          <td></td>
1478          <td class="paramtype">float&#160;</td>
1479          <td class="paramname"><em>x</em>, </td>
1480        </tr>
1481        <tr>
1482          <td class="paramkey"></td>
1483          <td></td>
1484          <td class="paramtype">float&#160;</td>
1485          <td class="paramname"><em>y</em>, </td>
1486        </tr>
1487        <tr>
1488          <td class="paramkey"></td>
1489          <td></td>
1490          <td class="paramtype">float&#160;</td>
1491          <td class="paramname"><em>z</em>&#160;</td>
1492        </tr>
1493        <tr>
1494          <td></td>
1495          <td>)</td>
1496          <td></td><td></td>
1497        </tr>
1498      </table>
1499</div>
1500<div class="memdoc">
1501<p>Multiply the matrix <em>m</em> with a translation matrix.</p>
1502<p>This function modifies a transformation matrix to first do a translation. When translating, a number is added to each component of a vector.</p>
1503<p>To apply this combined transformation to a vector, multiply the vector by the created matrix using <a class="el" href="rs__matrix_8rsh.html#a4d9a8bb7c3f5d67b14fa349bdd531d13">rsMatrixMultiply</a>.</p>
1504<dl><dt><b>Parameters:</b></dt><dd>
1505  <table class="params">
1506    <tr><td class="paramname">m</td><td>The matrix to modify. </td></tr>
1507    <tr><td class="paramname">x</td><td>The number to add to each x component. </td></tr>
1508    <tr><td class="paramname">y</td><td>The number to add to each y component. </td></tr>
1509    <tr><td class="paramname">z</td><td>The number to add to each z component. </td></tr>
1510  </table>
1511  </dd>
1512</dl>
1513
1514</div>
1515</div>
1516<a class="anchor" id="a88095c70f1550c760844b3e32e41a31a"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="a88095c70f1550c760844b3e32e41a31a" args="(rs_matrix4x4 *m)" -->
1517<div class="memitem">
1518<div class="memproto">
1519      <table class="memname">
1520        <tr>
1521          <td class="memname">void rsMatrixTranspose </td>
1522          <td>(</td>
1523          <td class="paramtype"><a class="el" href="structrs__matrix4x4.html">rs_matrix4x4</a> *&#160;</td>
1524          <td class="paramname"><em>m</em></td><td>)</td>
1525          <td></td>
1526        </tr>
1527      </table>
1528</div>
1529<div class="memdoc">
1530<p>Transpose the matrix m in place.</p>
1531<dl><dt><b>Parameters:</b></dt><dd>
1532  <table class="params">
1533    <tr><td class="paramname">m</td><td>The matrix to transpose. </td></tr>
1534  </table>
1535  </dd>
1536</dl>
1537
1538</div>
1539</div>
1540<a class="anchor" id="ac52acb31a705f6c68af8bddea0e79969"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="ac52acb31a705f6c68af8bddea0e79969" args="(rs_matrix3x3 *m)" -->
1541<div class="memitem">
1542<div class="memproto">
1543      <table class="memname">
1544        <tr>
1545          <td class="memname">void rsMatrixTranspose </td>
1546          <td>(</td>
1547          <td class="paramtype"><a class="el" href="structrs__matrix3x3.html">rs_matrix3x3</a> *&#160;</td>
1548          <td class="paramname"><em>m</em></td><td>)</td>
1549          <td></td>
1550        </tr>
1551      </table>
1552</div>
1553<div class="memdoc">
1554<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1555
1556</div>
1557</div>
1558<a class="anchor" id="a49164dd4d4e85b212196028b1fd89dc1"></a><!-- doxytag: member="rs_matrix.rsh::rsMatrixTranspose" ref="a49164dd4d4e85b212196028b1fd89dc1" args="(rs_matrix2x2 *m)" -->
1559<div class="memitem">
1560<div class="memproto">
1561      <table class="memname">
1562        <tr>
1563          <td class="memname">void rsMatrixTranspose </td>
1564          <td>(</td>
1565          <td class="paramtype"><a class="el" href="structrs__matrix2x2.html">rs_matrix2x2</a> *&#160;</td>
1566          <td class="paramname"><em>m</em></td><td>)</td>
1567          <td></td>
1568        </tr>
1569      </table>
1570</div>
1571<div class="memdoc">
1572<p>This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. </p>
1573
1574</div>
1575</div>
1576</div>
1577
1578</body>
1579</html>
1580