1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
|
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>nevrax.org : docs</TITLE>
<LINK REL=stylesheet TYPE="text/css" HREF="/inc/css/nevrax.css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
<!-- uplinks -->
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
<TR>
<TD WIDTH=16><IMG SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
<TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
<TD WIDTH=16><IMG SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
<TD><IMG width=6 height=14 SRC="/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF='/'><b>Home</B></FONT></A> </TD>
<TD><IMG width=6 height=14 SRC="/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF='/'><b>nevrax.com</B></FONT></A> </TD>
</TR>
</TABLE>
<!-- banner Nevrax -->
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
<TR><TD BGCOLOR="#000000" BACKGROUND="/inc/img/black_banner.jpg"><A HREF=""><IMG SRC="/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
</TABLE>
<!-- main table -->
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
<TR>
<TD WIDTH=16><IMG SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
<TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
<!------ Begin Box ------>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
<FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
<TABLE cellspacing=0 cellpadding=1 border=0>
<tr><td ALIGN=middle><a class='linkbox' href="/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="/news/" TITLE="News">News</a></td></tr>
<tr><td ALIGN=middle><a class='linkbox' href="/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
<tr><td ALIGN=middle><a class='linkbox' href="/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="/docs/" TITLE="Documentation">Documentation</a></td></tr>
<tr><td ALIGN=middle><a class='linkbox' href="/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="/cvs/" TITLE="CVS Web">CVS</a></td></tr>
<tr><td ALIGN=middle><a class='linkbox' href="/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
<tr><td ALIGN=middle><a class='linkbox' href="/GPL.php3" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=/inc/img/picto-gpl.gif ALT=#></A></td><td><a class='linkbox' href="/GPL.php3" TITLE="License">License</a></td></tr>
</TABLE>
</TD></TR></TABLE></TD></TR></TABLE>
<!------ End Box ------>
</TD>
<TD WIDTH=15><IMG SRC="/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
<TD ALIGN=left valign=top><IMG SRC="/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
<!-- title -->
<TABLE background="/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
<A HREF="/docs/"><img src="/inc/img/t_docs.gif" ALT="Docs" HEIGHT=20 BORDER=0></A>
</td><td><IMG SRC="/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
</td></tr></table>
<!-- block -->
<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="/inc/img/reddots.gif"></TD>
<TD><B>Documentation</B></TD>
<TD ALIGN=RIGHT> </td>
</tr></table>
<!-- Generated by Doxygen 1.2.14 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> <a class="qindex" href="pages.html">Related Pages</a> <a class="qindexRef" doxygen="_cgi:/cgi-bin/nel-search.cgi" href="/cgi-bin/nel-search.cgi">Search</a> </center>
<hr><h1>matrix_3x4.h</h1><a href="matrix__3x4_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
00007 <font class="comment">/* Copyright, 2000-2002 Nevrax Ltd.</font>
00008 <font class="comment"> *</font>
00009 <font class="comment"> * This file is part of NEVRAX NEL.</font>
00010 <font class="comment"> * NEVRAX NEL is free software; you can redistribute it and/or modify</font>
00011 <font class="comment"> * it under the terms of the GNU General Public License as published by</font>
00012 <font class="comment"> * the Free Software Foundation; either version 2, or (at your option)</font>
00013 <font class="comment"> * any later version.</font>
00014 <font class="comment"></font>
00015 <font class="comment"> * NEVRAX NEL is distributed in the hope that it will be useful, but</font>
00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
00018 <font class="comment"> * General Public License for more details.</font>
00019 <font class="comment"></font>
00020 <font class="comment"> * You should have received a copy of the GNU General Public License</font>
00021 <font class="comment"> * along with NEVRAX NEL; see the file COPYING. If not, write to the</font>
00022 <font class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font>
00023 <font class="comment"> * MA 02111-1307, USA.</font>
00024 <font class="comment"> */</font>
00025
00026 <font class="preprocessor">#ifndef NL_MATRIX_3X4_H</font>
00027 <font class="preprocessor"></font><font class="preprocessor">#define NL_MATRIX_3X4_H</font>
00028 <font class="preprocessor"></font>
00029 <font class="preprocessor">#include "<a class="code" href="types__nl_8h.html">nel/misc/types_nl.h</a>"</font>
00030
00031
00032 <font class="keyword">namespace </font>NL3D
00033 {
00034
00035
00036 <font class="comment">// ***************************************************************************</font>
00037 <font class="comment">// ***************************************************************************</font>
00038 <font class="comment">// STD Matrix</font>
00039 <font class="comment">// ***************************************************************************</font>
00040 <font class="comment">// ***************************************************************************</font>
00041
00042
00043 <font class="comment">// ***************************************************************************</font>
<a name="l00050"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html">00050</a> <font class="comment"></font><font class="keyword">class </font>CMatrix3x4
00051 {
00052 <font class="keyword">public</font>:
00053 <font class="comment">// Order them in memory line first, for faster memory access.</font>
<a name="l00054"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">00054</a> <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>;
<a name="l00055"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">00055</a> <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>;
<a name="l00056"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">00056</a> <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>;
00057
00058 <font class="comment">// Copy from a matrix.</font>
<a name="l00059"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#a0">00059</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a0">set</a>(<font class="keyword">const</font> CMatrix &mat)
00060 {
00061 <font class="keyword">const</font> <font class="keywordtype">float</font> *m =mat.get();
00062 <a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>= m[0]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>= m[4]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>= m[8] ; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>= m[12];
00063 <a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>= m[1]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>= m[5]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>= m[9] ; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>= m[13];
00064 <a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>= m[2]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>= m[6]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>= m[10]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>= m[14];
00065 }
00066
00067
00068 <font class="comment">// mulSetvector. NB: in should be different as v!! (else don't work).</font>
<a name="l00069"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#a1">00069</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a1">mulSetVector</a>(<font class="keyword">const</font> CVector &in, CVector &out)
00070 {
00071 out.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*in.z);
00072 out.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*in.z);
00073 out.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*in.z);
00074 }
00075 <font class="comment">// mulSetpoint. NB: in should be different as v!! (else don't work).</font>
<a name="l00076"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#a2">00076</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a2">mulSetPoint</a>(<font class="keyword">const</font> CVector &in, CVector &out)
00077 {
00078 out.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>);
00079 out.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>);
00080 out.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>);
00081 }
00082
00083
00084 <font class="comment">// mulSetvector. NB: in should be different as v!! (else don't work).</font>
<a name="l00085"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#a3">00085</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a1">mulSetVector</a>(<font class="keyword">const</font> CVector &in, <font class="keywordtype">float</font> scale, CVector &out)
00086 {
00087 out.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*in.z) * scale;
00088 out.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*in.z) * scale;
00089 out.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*in.z) * scale;
00090 }
00091 <font class="comment">// mulSetpoint. NB: in should be different as v!! (else don't work).</font>
<a name="l00092"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#a4">00092</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a2">mulSetPoint</a>(<font class="keyword">const</font> CVector &in, <font class="keywordtype">float</font> scale, CVector &out)
00093 {
00094 out.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>) * scale;
00095 out.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>) * scale;
00096 out.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>) * scale;
00097 }
00098
00099
00100 <font class="comment">// mulAddvector. NB: in should be different as v!! (else don't work).</font>
<a name="l00101"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#a5">00101</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a5">mulAddVector</a>(<font class="keyword">const</font> CVector &in, <font class="keywordtype">float</font> scale, CVector &out)
00102 {
00103 out.x+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*in.z) * scale;
00104 out.y+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*in.z) * scale;
00105 out.z+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*in.z) * scale;
00106 }
00107 <font class="comment">// mulAddpoint. NB: in should be different as v!! (else don't work).</font>
<a name="l00108"></a><a class="code" href="classNL3D_1_1CMatrix3x4.html#a6">00108</a> <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a6">mulAddPoint</a>(<font class="keyword">const</font> CVector &in, <font class="keywordtype">float</font> scale, CVector &out)
00109 {
00110 out.x+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>) * scale;
00111 out.y+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>) * scale;
00112 out.z+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*in.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*in.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*in.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>) * scale;
00113 }
00114
00115
00116
00117 };
00118
00119
00120 <font class="comment">// ***************************************************************************</font>
00121 <font class="comment">// ***************************************************************************</font>
00122 <font class="comment">// SSE Matrix</font>
00123 <font class="comment">// ***************************************************************************</font>
00124 <font class="comment">// ***************************************************************************</font>
00125
00126
00127 <font class="comment">// ***************************************************************************</font>
00128 <font class="preprocessor">#ifdef NL_OS_WINDOWS</font>
00129 <font class="preprocessor"></font>
00130 <font class="comment">//#define NL_DebugSSE</font>
00131 <font class="comment">//#define NL_DebugSSENoSkin</font>
00132
00133
00134 <font class="comment">// For fast vector/point multiplication.</font>
00135 <font class="keyword">class </font>CMatrix3x4SSE
00136 {
00137 <font class="keyword">public</font>:
00138 <font class="comment">// Order them in memory column first, for SSE column multiplication.</font>
00139 <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>, a41;
00140 <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>, a42;
00141 <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>, a43;
00142 <font class="keywordtype">float</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>, <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>, a44;
00143
00144 <font class="comment">// Copy from a matrix.</font>
00145 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a0">set</a>(<font class="keyword">const</font> CMatrix &mat)
00146 {
00147 <font class="keyword">const</font> <font class="keywordtype">float</font> *m =mat.get();
00148 <a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>= m[0]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>= m[4]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>= m[8] ; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>= m[12];
00149 <a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>= m[1]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>= m[5]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>= m[9] ; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>= m[13];
00150 <a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>= m[2]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>= m[6]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>= m[10]; <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>= m[14];
00151 <font class="comment">// not used.</font>
00152 <font class="comment">//a41= 0 ; a42= 0 ; a43= 0 ; a44= 1; </font>
00153 }
00154
00155
00156 <font class="comment">// mulSetvector. NB: in should be different as v!! (else don't work).</font>
00157 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a1">mulSetVector</a>(<font class="keyword">const</font> CVector &vin, CVector &vout)
00158 {
00159 <font class="preprocessor"> #ifndef NL_DebugSSE</font>
00160 <font class="preprocessor"></font> __asm
00161 {
00162 mov eax, vin
00163 mov ebx, <font class="keyword">this</font>
00164 mov edi, vout
00165 <font class="comment">// Load in vector in op[0]</font>
00166 movss xmm0, [eax]vin.x
00167 movss xmm1, [eax]vin.y
00168 movss xmm2, [eax]vin.z
00169 <font class="comment">// Expand op[0] to op[1], op[2], op[3]</font>
00170 shufps xmm0, xmm0, 0
00171 shufps xmm1, xmm1, 0
00172 shufps xmm2, xmm2, 0
00173 <font class="comment">// Mul each vector with 3 Matrix column</font>
00174 mulps xmm0, [ebx]<font class="keyword">this</font>.a11
00175 mulps xmm1, [ebx]<font class="keyword">this</font>.a12
00176 mulps xmm2, [ebx]<font class="keyword">this</font>.a13
00177 <font class="comment">// Add each column vector.</font>
00178 addps xmm0, xmm1
00179 addps xmm0, xmm2
00180
00181 <font class="comment">// write the result.</font>
00182 movss [edi]vout.x, xmm0
00183 shufps xmm0, xmm0, 33
00184 movss [edi]vout.y, xmm0
00185 movhlps xmm0, xmm0
00186 movss [edi]vout.z, xmm0
00187 }
00188 <font class="preprocessor"> #elif !defined (NL_DebugSSENoSkin)</font>
00189 <font class="preprocessor"></font> vout.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*vin.z);
00190 vout.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*vin.z);
00191 vout.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*vin.z);
00192 <font class="preprocessor"> #else</font>
00193 <font class="preprocessor"></font> vout= vin;
00194 <font class="preprocessor"> #endif</font>
00195 <font class="preprocessor"></font> }
00196 <font class="comment">// mulSetpoint. NB: in should be different as v!! (else don't work).</font>
00197 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a2">mulSetPoint</a>(<font class="keyword">const</font> CVector &vin, CVector &vout)
00198 {
00199 <font class="preprocessor"> #ifndef NL_DebugSSE</font>
00200 <font class="preprocessor"></font> __asm
00201 {
00202 mov eax, vin
00203 mov ebx, <font class="keyword">this</font>
00204 mov edi, vout
00205 <font class="comment">// Load in vector in op[0]</font>
00206 movss xmm0, [eax]vin.x
00207 movss xmm1, [eax]vin.y
00208 movss xmm2, [eax]vin.z
00209 <font class="comment">// Expand op[0] to op[1], op[2], op[3]</font>
00210 shufps xmm0, xmm0, 0
00211 shufps xmm1, xmm1, 0
00212 shufps xmm2, xmm2, 0
00213 <font class="comment">// Mul each vector with 3 Matrix column</font>
00214 mulps xmm0, [ebx]<font class="keyword">this</font>.a11
00215 mulps xmm1, [ebx]<font class="keyword">this</font>.a12
00216 mulps xmm2, [ebx]<font class="keyword">this</font>.a13
00217 <font class="comment">// Add each column vector.</font>
00218 addps xmm0, xmm1
00219 addps xmm0, xmm2
00220 <font class="comment">// Add Matrix translate column vector</font>
00221 addps xmm0, [ebx]<font class="keyword">this</font>.a14
00222
00223 <font class="comment">// write the result.</font>
00224 movss [edi]vout.x, xmm0
00225 shufps xmm0, xmm0, 33
00226 movss [edi]vout.y, xmm0
00227 movhlps xmm0, xmm0
00228 movss [edi]vout.z, xmm0
00229 }
00230 <font class="preprocessor"> #elif !defined (NL_DebugSSENoSkin)</font>
00231 <font class="preprocessor"></font> vout.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>);
00232 vout.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>);
00233 vout.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>);
00234 <font class="preprocessor"> #else</font>
00235 <font class="preprocessor"></font> vout= vin;
00236 <font class="preprocessor"> #endif</font>
00237 <font class="preprocessor"></font> }
00238
00239
00240 <font class="comment">// mulSetvector. NB: vin should be different as v!! (else don't work).</font>
00241 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a1">mulSetVector</a>(<font class="keyword">const</font> CVector &vin, <font class="keywordtype">float</font> scale, CVector &vout)
00242 {
00243 <font class="preprocessor"> #ifndef NL_DebugSSE</font>
00244 <font class="preprocessor"></font> __asm
00245 {
00246 mov eax, vin
00247 mov ebx, <font class="keyword">this</font>
00248 mov edi, vout
00249 <font class="comment">// Load in vector in op[0]</font>
00250 movss xmm0, [eax]vin.x
00251 movss xmm1, [eax]vin.y
00252 movss xmm2, [eax]vin.z
00253 <font class="comment">// Load scale in op[0]</font>
00254 movss xmm3, scale
00255 <font class="comment">// Expand op[0] to op[1], op[2], op[3]</font>
00256 shufps xmm0, xmm0, 0
00257 shufps xmm1, xmm1, 0
00258 shufps xmm2, xmm2, 0
00259 shufps xmm3, xmm3, 0
00260 <font class="comment">// Store vertex column in other regs.</font>
00261 movaps xmm5, xmm0
00262 movaps xmm6, xmm1
00263 movaps xmm7, xmm2
00264 <font class="comment">// Mul each vector with 3 Matrix column</font>
00265 mulps xmm0, [ebx]<font class="keyword">this</font>.a11
00266 mulps xmm1, [ebx]<font class="keyword">this</font>.a12
00267 mulps xmm2, [ebx]<font class="keyword">this</font>.a13
00268 <font class="comment">// Add each column vector.</font>
00269 addps xmm0, xmm1
00270 addps xmm0, xmm2
00271
00272 <font class="comment">// mul final result with scale</font>
00273 mulps xmm0, xmm3
00274
00275 <font class="comment">// store it in xmm4 for future use.</font>
00276 movaps xmm4, xmm0
00277 }
00278 <font class="preprocessor"> #elif !defined (NL_DebugSSENoSkin)</font>
00279 <font class="preprocessor"></font> vout.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*vin.z) * scale;
00280 vout.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*vin.z) * scale;
00281 vout.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*vin.z) * scale;
00282 <font class="preprocessor"> #else</font>
00283 <font class="preprocessor"></font> vout= vin;
00284 <font class="preprocessor"> #endif</font>
00285 <font class="preprocessor"></font> }
00286 <font class="comment">// mulSetpoint. NB: vin should be different as v!! (else don't work).</font>
00287 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a2">mulSetPoint</a>(<font class="keyword">const</font> CVector &vin, <font class="keywordtype">float</font> scale, CVector &vout)
00288 {
00289 <font class="preprocessor"> #ifndef NL_DebugSSE</font>
00290 <font class="preprocessor"></font> __asm
00291 {
00292 mov eax, vin
00293 mov ebx, <font class="keyword">this</font>
00294 mov edi, vout
00295 <font class="comment">// Load in vector in op[0]</font>
00296 movss xmm0, [eax]vin.x
00297 movss xmm1, [eax]vin.y
00298 movss xmm2, [eax]vin.z
00299 <font class="comment">// Load scale in op[0]</font>
00300 movss xmm3, scale
00301 <font class="comment">// Expand op[0] to op[1], op[2], op[3]</font>
00302 shufps xmm0, xmm0, 0
00303 shufps xmm1, xmm1, 0
00304 shufps xmm2, xmm2, 0
00305 shufps xmm3, xmm3, 0
00306 <font class="comment">// Store vertex column in other regs.</font>
00307 movaps xmm5, xmm0
00308 movaps xmm6, xmm1
00309 movaps xmm7, xmm2
00310 <font class="comment">// Mul each vector with 3 Matrix column</font>
00311 mulps xmm0, [ebx]<font class="keyword">this</font>.a11
00312 mulps xmm1, [ebx]<font class="keyword">this</font>.a12
00313 mulps xmm2, [ebx]<font class="keyword">this</font>.a13
00314 <font class="comment">// Add each column vector.</font>
00315 addps xmm0, xmm1
00316 addps xmm0, xmm2
00317 <font class="comment">// Add Matrix translate column vector</font>
00318 addps xmm0, [ebx]<font class="keyword">this</font>.a14
00319
00320 <font class="comment">// mul final result with scale</font>
00321 mulps xmm0, xmm3
00322
00323 <font class="comment">// store it in xmm4 for future use.</font>
00324 movaps xmm4, xmm0
00325 }
00326 <font class="preprocessor"> #elif !defined (NL_DebugSSENoSkin)</font>
00327 <font class="preprocessor"></font> vout.x= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>) * scale;
00328 vout.y= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>) * scale;
00329 vout.z= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>) * scale;
00330 <font class="preprocessor"> #else</font>
00331 <font class="preprocessor"></font> vout= vin;
00332 <font class="preprocessor"> #endif</font>
00333 <font class="preprocessor"></font> }
00334
00335
00336 <font class="comment">// mulAddvector. NB: vin should be different as v!! (else don't work).</font>
00337 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a5">mulAddVector</a>(<font class="keyword">const</font> CVector &vin, <font class="keywordtype">float</font> scale, CVector &vout)
00338 {
00339 <font class="preprocessor"> #ifndef NL_DebugSSE</font>
00340 <font class="preprocessor"></font> __asm
00341 {
00342 mov ebx, <font class="keyword">this</font>
00343 mov edi, vout
00344 <font class="comment">// Load vin vector loaded in mulSetVector</font>
00345 movaps xmm0, xmm5
00346 movaps xmm1, xmm6
00347 movaps xmm2, xmm7
00348 <font class="comment">// Load scale in op[0]</font>
00349 movss xmm3, scale
00350 <font class="comment">// Expand op[0] to op[1], op[2], op[3]</font>
00351 shufps xmm3, xmm3, 0
00352 <font class="comment">// Mul each vector with 3 Matrix column</font>
00353 mulps xmm0, [ebx]<font class="keyword">this</font>.a11
00354 mulps xmm1, [ebx]<font class="keyword">this</font>.a12
00355 mulps xmm2, [ebx]<font class="keyword">this</font>.a13
00356 <font class="comment">// Add each column vector.</font>
00357 addps xmm0, xmm1
00358 addps xmm0, xmm2
00359
00360 <font class="comment">// mul final result with scale</font>
00361 mulps xmm0, xmm3
00362
00363 <font class="comment">// Add result, with prec sum.</font>
00364 addps xmm0, xmm4
00365
00366 <font class="comment">// store it in xmm4 for future use.</font>
00367 movaps xmm4, xmm0
00368
00369 <font class="comment">// write the result.</font>
00370 movss [edi]vout.x, xmm0
00371 shufps xmm0, xmm0, 33
00372 movss [edi]vout.y, xmm0
00373 movhlps xmm0, xmm0
00374 movss [edi]vout.z, xmm0
00375 }
00376 <font class="preprocessor"> #elif !defined (NL_DebugSSENoSkin)</font>
00377 <font class="preprocessor"></font> vout.x+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*vin.z) * scale;
00378 vout.y+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*vin.z) * scale;
00379 vout.z+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*vin.z) * scale;
00380 <font class="preprocessor"> #else</font>
00381 <font class="preprocessor"></font> vout= vin;
00382 <font class="preprocessor"> #endif</font>
00383 <font class="preprocessor"></font> }
00384 <font class="comment">// mulAddpoint. NB: vin should be different as v!! (else don't work).</font>
00385 <font class="keywordtype">void</font> <a class="code" href="classNL3D_1_1CMatrix3x4.html#a6">mulAddPoint</a>(<font class="keyword">const</font> CVector &vin, <font class="keywordtype">float</font> scale, CVector &vout)
00386 {
00387 <font class="preprocessor"> #ifndef NL_DebugSSE</font>
00388 <font class="preprocessor"></font> __asm
00389 {
00390 mov ebx, <font class="keyword">this</font>
00391 mov edi, vout
00392 <font class="comment">// Load vin vector loaded in mulSetPoint</font>
00393 movaps xmm0, xmm5
00394 movaps xmm1, xmm6
00395 movaps xmm2, xmm7
00396 <font class="comment">// Load scale in op[0]</font>
00397 movss xmm3, scale
00398 <font class="comment">// Expand op[0] to op[1], op[2], op[3]</font>
00399 shufps xmm3, xmm3, 0
00400 <font class="comment">// Mul each vector with 3 Matrix column</font>
00401 mulps xmm0, [ebx]<font class="keyword">this</font>.a11
00402 mulps xmm1, [ebx]<font class="keyword">this</font>.a12
00403 mulps xmm2, [ebx]<font class="keyword">this</font>.a13
00404 <font class="comment">// Add each column vector.</font>
00405 addps xmm0, xmm1
00406 addps xmm0, xmm2
00407 <font class="comment">// Add Matrix translate column vector</font>
00408 addps xmm0, [ebx]<font class="keyword">this</font>.a14
00409
00410 <font class="comment">// mul final result with scale</font>
00411 mulps xmm0, xmm3
00412
00413 <font class="comment">// Add result, with prec sum.</font>
00414 addps xmm0, xmm4
00415
00416 <font class="comment">// store it in xmm4 for future use.</font>
00417 movaps xmm4, xmm0
00418
00419 <font class="comment">// write the result.</font>
00420 movss [edi]vout.x, xmm0
00421 shufps xmm0, xmm0, 33
00422 movss [edi]vout.y, xmm0
00423 movhlps xmm0, xmm0
00424 movss [edi]vout.z, xmm0
00425 }
00426 <font class="preprocessor"> #elif !defined (NL_DebugSSENoSkin)</font>
00427 <font class="preprocessor"></font> vout.x+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m0">a11</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m1">a12</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m2">a13</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m3">a14</a>) * scale;
00428 vout.y+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m4">a21</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m5">a22</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m6">a23</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m7">a24</a>) * scale;
00429 vout.z+= (<a class="code" href="classNL3D_1_1CMatrix3x4.html#m8">a31</a>*vin.x + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m9">a32</a>*vin.y + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m10">a33</a>*vin.z + <a class="code" href="classNL3D_1_1CMatrix3x4.html#m11">a34</a>) * scale;
00430 <font class="preprocessor"> #else</font>
00431 <font class="preprocessor"></font> vout= vin;
00432 <font class="preprocessor"> #endif</font>
00433 <font class="preprocessor"></font> }
00434
00435 };
00436
00437 <font class="preprocessor">#else // NL_OS_WINDOWS</font>
00438 <font class="preprocessor"></font>
<a name="l00439"></a><a class="code" href="classNL3D_1_1CMatrix3x4SSE.html">00439</a> <font class="keyword">class </font>CMatrix3x4SSE : <font class="keyword">public</font> CMatrix3x4 { };
00440 <font class="preprocessor">#endif</font>
00441 <font class="preprocessor"></font>
00442
00443
00444 } <font class="comment">// NL3D</font>
00445
00446
00447 <font class="preprocessor">#endif // NL_MATRIX_3X4_H</font>
00448 <font class="preprocessor"></font>
00449 <font class="comment">/* End of matrix_3x4.h */</font>
</pre></div>
<!-- footer -->
<BR><FONT Size=+5> </FONT>
</TD>
<TD WIDTH=15><IMG SRC=/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
</TR>
</TABLE>
</BODY>
</HTML>
|