home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Programming Black Book (Special Edition)
/
BlackBook.bin
/
disk1
/
source
/
chapter51
/
l50-2.c
< prev
next >
Wrap
Text File
|
1997-06-18
|
1KB
|
45 lines
/* Matrix arithmetic functions.
Tested with Borland C++ 4.02 in small model by Jim Mischel 12/16/94.
*/
/* Matrix multiplies Xform by SourceVec, and stores the result in
DestVec. Multiplies a 4x4 matrix times a 4x1 matrix; the result
is a 4x1 matrix, as follows:
-- -- -- -- -- --
| | | 4 | | 4 |
| 4x4 | X | x | = | x |
| | | 1 | | 1 |
-- -- -- -- -- -- */
void XformVec(double Xform[4][4], double * SourceVec,
double * DestVec)
{
int i,j;
for (i=0; i<4; i++) {
DestVec[i] = 0;
for (j=0; j<4; j++)
DestVec[i] += Xform[i][j] * SourceVec[j];
}
}
/* Matrix multiplies SourceXform1 by SourceXform2 and stores the
result in DestXform. Multiplies a 4x4 matrix times a 4x4 matrix;
the result is a 4x4 matrix, as follows:
-- -- -- -- -- --
| | | | | |
| 4x4 | X | 4x4 | = | 4x4 |
| | | | | |
-- -- -- -- -- -- */
void ConcatXforms(double SourceXform1[4][4], double SourceXform2[4][4],
double DestXform[4][4])
{
int i,j,k;
for (i=0; i<4; i++) {
for (j=0; j<4; j++) {
DestXform[i][j] = 0;
for (k=0; k<4; k++)
DestXform[i][j] += SourceXform1[i][k] * SourceXform2[k][j];
}
}
}