home *** CD-ROM | disk | FTP | other *** search
/ Compressed Image File Formats / CompressedImageFileFormatsJohnMiano.iso / pc / Examples / c07 / src / matrix.cpp < prev   
Encoding:
C/C++ Source or Header  |  1998-12-21  |  1.1 KB  |  62 lines

  1. #include <iostream.h>
  2. #include <math.h>
  3. #include "matrix.h"
  4.  
  5. #ifndef M_PI
  6. #define M_PI acos (-1.0)
  7. #endif
  8.  
  9. MATRIX DctMatrix ;
  10. MATRIX IDctMatrix ;
  11.  
  12. static bool Initialized ;
  13.  
  14. void InitializeDctMatrix ()
  15. {
  16.   if (Initialized)
  17.     return ;
  18.  
  19.   Initialized = true ;
  20.  
  21.   unsigned int ii, jj ;
  22.  
  23.   for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
  24.     DctMatrix [0][jj] = 1.0 / sqrt (8.0) ;
  25.  
  26.   for (ii = 1 ; ii < JpegSampleWidth ; ++ ii)
  27.   {
  28.     for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
  29.     {
  30.       DctMatrix [ii][jj] = 0.5 * cos (((2 * jj + 1) * ii) * M_PI /16.0) ;
  31.     }
  32.   }
  33.  
  34.   for (ii = 0 ; ii < JpegSampleWidth ; ++ ii)
  35.   {
  36.     for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
  37.     {
  38.       IDctMatrix [ii][jj] = DctMatrix [jj][ii] ;
  39.     }
  40.   }
  41.   return ;
  42. }
  43.  
  44.  
  45. void Multiply (MATRIX aa, MATRIX bb, MATRIX cc)
  46. {
  47.   unsigned int ii, jj, kk ;
  48.   for (ii = 0 ; ii < JpegSampleWidth ; ++ ii)
  49.   {
  50.     for (jj = 0 ; jj < JpegSampleWidth ; ++ jj)
  51.     {
  52.       cc [ii][jj] = 0.0 ;
  53.       for (kk = 0 ; kk < JpegSampleWidth ; ++ kk)
  54.       {
  55.         cc [ii][jj] += aa [ii][kk] * bb [kk][jj] ;  
  56.       }
  57.     }
  58.   }
  59.   return ;
  60. }
  61.  
  62.