Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

SpecFVR/tfilters.cpp

Go to the documentation of this file.
00001 /*
00002 ### Written by Torsten Moeller
00003 ### sometime in March 1998
00004 ### let me know, if you find any errors (moeller@cis.ohio-state.edu)
00005 */
00006 
00007 #include "tfilters.h"
00008 
00009 namespace SpecFVRNS
00010 {
00011     
00012 #define OVER_3 0.33333333
00013 #define OVER_6 0.16666666
00014 #define OVER_12 0.0833333333
00015 #define OVER_2_3 0.6666666666
00016 
00017 float  wm3h, wm3g, wm3f, wm3e, wm3d, wm3c, wm3b, wm3a;
00018 float  wm2h, wm2g, wm2f, wm2e, wm2d, wm2c, wm2b, wm2a;
00019 float  wm1h, wm1g, wm1f, wm1e, wm1d, wm1c, wm1b, wm1a;
00020 float  wm0h, wm0g, wm0f, wm0e, wm0d, wm0c, wm0b, wm0a;
00021 float  wp1h, wp1g, wp1f, wp1e, wp1d, wp1c, wp1b, wp1a;
00022 float  wp2h, wp2g, wp2f, wp2e, wp2d, wp2c, wp2b, wp2a;
00023 
00024 
00025 int d0_c0_1ef(float a, float t, float *coeff) {
00026 
00027   coeff[0] = t;
00028   coeff[1] = 1-t;
00029 
00030   return 2;
00031 }
00032 
00033 int d0_c0_2ef(float a, float t, float *coeff) {
00034 
00035   coeff[0] = t;
00036   coeff[1] = 1-t;
00037 
00038   return 2;
00039 }
00040 
00041 int d0_c0_3ef(float a, float t, float *coeff) {
00042 
00043   coeff[0] = ( t -1)*t/4;
00044   coeff[1] = (-t +5)*t/4;
00045   coeff[2] = (-t -3)*t/4 +1;
00046   coeff[3] = ( t -1)*t/4;
00047 
00048   return 4;
00049 }
00050 
00051 int d0_c0_4ef(float a, float t, float *coeff) {
00052 
00053   wm2d =  OVER_6; wm2c =    0; wm2b = -OVER_6; wm2a = 0;
00054   wm1d =    -0.5; wm1c =  0.5; wm1b =       1; wm1a = 0;
00055   wm0d =     0.5; wm0c = -  1; wm0b =    -0.5; wm0a = 1;
00056   wp1d = -OVER_6; wp1c =  0.5; wp1b = -OVER_3; wp1a = 0;
00057 
00058   coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t;
00059   coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t;
00060   coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t +1;
00061   coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t;
00062 
00063   return 4;
00064 }
00065 
00066 int d0_c1_1ef(float a, float t, float *coeff) {
00067 
00068   wm1d = -2; wm1c =  3;
00069   wm0d =  2; wm0c = -3;
00070 
00071   coeff[0] = (wm1d*t +wm1c)*t*t;
00072   coeff[1] = (wm0d*t +wm0c)*t*t +1;
00073 
00074   return 2;
00075 }
00076 
00077 int d0_c1_2ef(float a, float t, float *coeff) {
00078 
00079   wm1a = 0.25;
00080   wm0a = 0.5;
00081   wp1a = 0.25;
00082 
00083   coeff[0] = ( t   )*t/4;
00084   coeff[1] = (-t +2)*t/4 +wm1a;
00085   coeff[2] = (-t   )*t/4 +wm0a;
00086   coeff[3] = ( t -2)*t/4 +wp1a;
00087 
00088   return 4;
00089 }
00090 
00091 int d0_c1_3ef(float a, float t, float *coeff) {
00092 
00093   wm2d =  0.5; wm2c = -0.5; wm2b =    0; wm2a = 0;
00094   wm1d = -1.5; wm1c =    2; wm1b =  0.5; wm1a = 0;
00095   wm0d =  1.5; wm0c = -2.5; wm0b =    0; wm0a = 1;
00096   wp1d = -0.5; wp1c =    1; wp1b = -0.5; wp1a = 0;
00097 
00098   coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t;
00099   coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t;
00100   coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t +1;
00101   coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t;
00102 
00103   return 4;
00104 }
00105 
00106 int d0_c1_4ef(float a, float t, float *coeff) {
00107 
00108   wm3d = -(   a       ); wm3c =  (1.5*a- 1./24); wm3b =          0; wm3a =             0;
00109   wm2d =  ( 5*a+OVER_6); wm2c = -(7.5*a- 1./8 ); wm2b = -(OVER_12); wm2a =  (0.5*a-1./24);
00110   wm1d = -(10*a+   0.5); wm1c =  ( 15*a+ 5./12); wm1b =  (OVER_2_3); wm1a = -(  2*a-OVER_6 );
00111   wm0d =  (10*a+   0.5); wm0c = -( 15*a+13./12); wm0b =          0; wm0a =  (  3*a+0.75 );
00112   wp1d = -( 5*a+OVER_6); wp1c =  (7.5*a+ 5./8 ); wp1b = -(OVER_2_3); wp1a = -(  2*a-OVER_6 );
00113   wp2d =  (   a       ); wp2c = -(1.5*a+ 1./24); wp2b =  (OVER_12); wp2a =  (0.5*a-1./24);
00114 
00115   coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00116   coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00117   coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00118   coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00119   coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00120   coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00121 
00122   return 6;
00123 }
00124 
00125 int d0_c2_1ef(float a, float t, float *coeff) {
00126 
00127   wm1f =  6; wm1e = -15; wm1d =  10; wm1c =  0; wm1b =  0; wm1a = 0;
00128   wm0f = -6; wm0e =  15; wm0d = -10; wm0c =  0; wm0b =  0; wm0a = 1;
00129 
00130   coeff[0] = ((wm1f*t +wm1e)*t +wm1d)*t*t*t;
00131   coeff[1] = ((wm0f*t +wm0e)*t +wm0d)*t*t*t +1;
00132 
00133   return 2;
00134 }
00135 
00136 int d0_c2_2ef(float a, float t, float *coeff) {
00137 
00138   wm2d =  OVER_6; wm2c =    0; wm2b =    0; wm2a =   0;
00139   wm1d =    -0.5; wm1c =  0.5; wm1b =  0.5; wm1a = OVER_6;
00140   wm0d =     0.5; wm0c = -  1; wm0b =    0; wm0a = OVER_2_3;
00141   wp1d = -OVER_6; wp1c =  0.5; wp1b = -0.5; wp1a = OVER_6;
00142 
00143   coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00144   coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00145   coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00146   coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00147 
00148   return 4;
00149 }
00150 
00151 int d0_c2_3ef(float a, float t, float *coeff) {
00152 
00153   wm2f = -1; wm2e =   2.5; wm2d = -1.5; wm2c =    0; wm2b =    0; wm2a = 0;
00154   wm1f =  3; wm1e = - 7.5; wm1d =  4.5; wm1c =  0.5; wm1b =  0.5; wm1a = 0;
00155   wm0f = -3; wm0e =   7.5; wm0d = -4.5; wm0c = -  1; wm0b =    0; wm0a = 1;
00156   wp1f =  1; wp1e = - 2.5; wp1d =  1.5; wp1c =  0.5; wp1b = -0.5; wp1a = 0;
00157 
00158   coeff[0] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00159   coeff[1] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00160   coeff[2] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00161   coeff[3] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00162 
00163   return 4;
00164 }
00165 
00166 int d0_c2_4ef(float a, float t, float *coeff) {
00167 
00168   wm3d = - 1./36; wm3c =        0; wm3b =         0; wm3a =     0;
00169   wm2d =  11./36; wm2c = -OVER_12; wm2b =  -OVER_12; wm2a = -1./36;
00170   wm1d = - 7./9 ; wm1c =    5./6 ; wm1b =  OVER_2_3; wm1a =  1./9 ;
00171   wm0d =   7./9 ; wm0c =    -1.5 ; wm0b =         0; wm0a =  5./6 ;
00172   wp1d = -11./36; wp1c =    5./6 ; wp1b = -OVER_2_3; wp1a =  1./9 ;
00173   wp2d =   1./36; wp2c = -OVER_12; wp2b =   OVER_12; wp2a = -1./36;
00174 
00175   coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00176   coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00177   coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00178   coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00179   coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00180   coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00181 
00182   return 6;
00183 }
00184 
00185 int d0_c3_1ef(float a, float t, float *coeff) {
00186 
00187   wm1h = -20; wm1g =  70; wm1f = -84; wm1e =  35; wm1d =   0; wm1c =  0; wm1b =  0; wm1a = 0;
00188   wm0h =  20; wm0g = -70; wm0f =  84; wm0e = -35; wm0d =   0; wm0c =  0; wm0b =  0; wm0a = 1;
00189 
00190   coeff[0] = (((wm1h*t +wm1g)*t +wm1f)*t +wm1e)*t*t*t*t;
00191   coeff[1] = (((wm0h*t +wm0g)*t +wm0f)*t +wm0e)*t*t*t*t +1;
00192 
00193   return 2;
00194 }
00195 
00196 int d0_c3_2ef(float a, float t, float *coeff) {
00197 
00198   wm2f = -0.10; wm2e =  0.25; wm2d = 0; wm2c =    0; wm2b =    0; wm2a =    0;
00199   wm1f =  0.30; wm1e = -0.75; wm1d = 0; wm1c =  0.5; wm1b =  0.5; wm1a = 0.15;
00200   wm0f = -0.30; wm0e =  0.75; wm0d = 0; wm0c = -  1; wm0b =    0; wm0a = 0.70;
00201   wp1f =  0.10; wp1e = -0.25; wp1d = 0; wp1c =  0.5; wp1b = -0.5; wp1a = 0.15;
00202 
00203   coeff[0] =    (wm2f*t +wm2e)*t*t*t*t;
00204   coeff[1] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00205   coeff[2] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00206   coeff[3] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00207 
00208   return 4;
00209 }
00210 
00211 int d0_c3_3ef(float a, float t, float *coeff) {
00212 
00213   wm2h =  3; wm2g = -10.5; wm2f =  12.5; wm2e = - 5; wm2d = 0; wm2c =    0; wm2b =    0; wm2a = 0;
00214   wm1h = -9; wm1g =  31.5; wm1f = -37.5; wm1e =  15; wm1d = 0; wm1c =  0.5; wm1b =  0.5; wm1a = 0;
00215   wm0h =  9; wm0g = -31.5; wm0f =  37.5; wm0e = -15; wm0d = 0; wm0c = -  1; wm0b =    0; wm0a = 1;
00216   wp1h = -3; wp1g =  10.5; wp1f = -12.5; wp1e =   5; wp1d = 0; wp1c =  0.5; wp1b = -0.5; wp1a = 0;
00217 
00218   coeff[0] = ((((((wm2h*t +wm2g)*t +wm2f)*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00219   coeff[1] = ((((((wm1h*t +wm1g)*t +wm1f)*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00220   coeff[2] = ((((((wm0h*t +wm0g)*t +wm0f)*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00221   coeff[3] = ((((((wp1h*t +wp1g)*t +wp1f)*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00222 
00223   return 4;
00224 }
00225 
00226 int d0_c3_4ef(float a, float t, float *coeff) {
00227 
00228   wm3f =   1./30; wm3e = - 1./16; wm3d =        0; wm3c =        0; wm3b =         0; wm3a = 0;
00229   wm2f = -OVER_6; wm2e =  17./48; wm2d =  OVER_12; wm2c =   -1./24; wm2b =  -OVER_12; wm2a = - 7./240;
00230   wm1f =  OVER_3; wm1e = -19./24; wm1d = -OVER_6 ; wm1c = OVER_2_3; wm1b =  OVER_2_3; wm1a =   7./60;
00231   wm0f = -OVER_3; wm0e =   7./8 ; wm0d =        0; wm0c =    -1.25; wm0b =         0; wm0a =  33./40;
00232   wp1f =  OVER_6; wp1e = -23./48; wp1d =  OVER_6 ; wp1c = OVER_2_3; wp1b = -OVER_2_3; wp1a =   7./60;
00233   wp2f =  -1./30; wp2e =   5./48; wp2d = -OVER_12; wp2c =   -1./24; wp2b =   OVER_12; wp2a = - 7./240;
00234 
00235   coeff[0] = ((((wm3f*t +wm3e)*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00236   coeff[1] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00237   coeff[2] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00238   coeff[3] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00239   coeff[4] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00240   coeff[5] = ((((wp2f*t +wp2e)*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00241 
00242   return 6;
00243 }
00244 
00245 int d0_cn_1ef(float a, float t, float *coeff) {
00246 
00247   coeff[0] = 0.5;
00248   coeff[1] = 0.5;
00249 
00250   return 2;
00251 }
00252 
00253 int d0_cn_2ef(float a, float t, float *coeff) {
00254 
00255   coeff[0] = t;
00256   coeff[1] = 1-t;
00257 
00258   return 2;
00259 }
00260 
00261 int d0_cn_3ef(float a, float t, float *coeff) {
00262 
00263   wm2c =  0.25; wm2b =  (2*a-0.25); wm2a = -(  a  );
00264   wm1c = -0.25; wm1b = -(6*a-1.25); wm1a =  (3*a  );
00265   wm0c = -0.25; wm0b =  (6*a-0.75); wm0a = -(3*a-1);
00266   wp1c =  0.25; wp1b = -(2*a+0.25); wp1a =  (  a  );
00267 
00268   coeff[0] = (wm2c*t +wm2b)*t + wm2a;
00269   coeff[1] = (wm1c*t +wm1b)*t + wm1a;
00270   coeff[2] = (wm0c*t +wm0b)*t + wm0a;
00271   coeff[3] = (wp1c*t +wp1b)*t + wp1a;
00272 
00273   return 4;
00274 }
00275 
00276 int d0_cn_4ef(float a, float t, float *coeff) {
00277 
00278   wm2d =  OVER_6; wm2c =    0; wm2b = -OVER_6; wm2a = 0;
00279   wm1d =    -0.5; wm1c =  0.5; wm1b =       1; wm1a = 0;
00280   wm0d =     0.5; wm0c = -1  ; wm0b =    -0.5; wm0a = 1;
00281   wp1d = -OVER_6; wp1c =  0.5; wp1b = -OVER_3; wp1a = 0;
00282 
00283   coeff[0] = ((wm2d*t +wm2c)*t +wm2b)*t + wm2a;
00284   coeff[1] = ((wm1d*t +wm1c)*t +wm1b)*t + wm1a;
00285   coeff[2] = ((wm0d*t +wm0c)*t +wm0b)*t + wm0a;
00286   coeff[3] = ((wp1d*t +wp1c)*t +wp1b)*t + wp1a;
00287 
00288   return 4;
00289 }
00290 
00291 int d1_c0_1ef(float a, float t, float *coeff) {
00292 
00293   coeff[0] = t/2;
00294   coeff[1] = (1-t)/2;
00295   coeff[2] = -t/2;
00296   coeff[3] = (t-1)/2;
00297 
00298   return 4;
00299 }
00300 
00301 int d1_c0_2ef(float a, float t, float *coeff) {
00302 
00303   coeff[0] = t/2;
00304   coeff[1] = (1-t)/2;
00305   coeff[2] = -t/2;
00306   coeff[3] = (t-1)/2;
00307 
00308   return 4;
00309 }
00310 
00311 int d1_c0_3ef(float a, float t, float *coeff) {
00312 
00313   wm3c =  (   a    ); wm3b = -(   a+OVER_12); wm3a = 0;
00314   wm2c = -( 5*a-0.5); wm2b =  ( 5*a+   0.25); wm2a = -OVER_12;
00315   wm1c =  (10*a-1.5); wm1b = -(10*a-   5./6); wm1a =  OVER_2_3;
00316   wm0c = -(10*a-1.5); wm0b =  (10*a-  13./6); wm0a = 0;
00317   wp1c =  ( 5*a-0.5); wp1b = -( 5*a-   1.25); wp1a = -OVER_2_3;
00318   wp2c = -(   a    ); wp2b =  (   a-OVER_12); wp2a =  OVER_12;
00319 
00320   coeff[0] = (wm3c*t +wm3b)*t +wm3a;
00321   coeff[1] = (wm2c*t +wm2b)*t +wm2a;
00322   coeff[2] = (wm1c*t +wm1b)*t +wm1a;
00323   coeff[3] = (wm0c*t +wm0b)*t +wm0a;
00324   coeff[4] = (wp1c*t +wp1b)*t +wp1a;
00325   coeff[5] = (wp2c*t +wp2b)*t +wp2a;
00326 
00327   return 6;
00328 }
00329 
00330 int d1_c0_4ef(float a, float t, float *coeff) {
00331 
00332   wm3d = OVER_12; wm3c =  (   a     ); wm3b = -(   a+ OVER_6); wm3a =       0;
00333   wm2d =   -0.25; wm2c = -( 5*a-0.25); wm2b =  ( 5*a+   0.75); wm2a = -OVER_12;
00334   wm1d =  OVER_6; wm1c =  (10*a- 0.5); wm1b = -(10*a+ OVER_3); wm1a =  OVER_2_3;
00335   wm0d =  OVER_6; wm0c = -(10*a     ); wm0b =  (10*a-   5./6); wm0a =       0;
00336   wp1d =   -0.25; wp1c =  ( 5*a+ 0.5); wp1b = -( 5*a-    0.5); wp1a = -OVER_2_3;
00337   wp2d = OVER_12; wp2c = -(   a+0.25); wp2b =  (   a+OVER_12); wp2a =  OVER_12;
00338 
00339   coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00340   coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00341   coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00342   coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00343   coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00344   coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00345 
00346   return 6;
00347 }
00348 
00349 int d1_c1_1ef(float a, float t, float *coeff) {
00350 
00351   wm2c =  0.5; wm2b =  0; wm2a =    0;
00352   wm1c = -1.5; wm1b =  1; wm1a =  0.5;
00353   wm0c =  1.5; wm0b = -2; wm0a =    0;
00354   wp1c = -0.5; wp1b =  1; wp1a = -0.5;
00355 
00356   coeff[0] = (wm2c*t +wm2b)*t +wm2a;
00357   coeff[1] = (wm1c*t +wm1b)*t +wm1a;
00358   coeff[2] = (wm0c*t +wm0b)*t +wm0a;
00359   coeff[3] = (wp1c*t +wp1b)*t +wp1a;
00360 
00361   return 4;
00362 }
00363 
00364 int d1_c1_2ef(float a, float t, float *coeff) {
00365 
00366   wm2c =  0.5; wm2b =  0; wm2a =    0;
00367   wm1c = -1.5; wm1b =  1; wm1a =  0.5;
00368   wm0c =  1.5; wm0b = -2; wm0a =    0;
00369   wp1c = -0.5; wp1b =  1; wp1a = -0.5;
00370 
00371   coeff[0] = (wm2c*t +wm2b)*t +wm2a;
00372   coeff[1] = (wm1c*t +wm1b)*t +wm1a;
00373   coeff[2] = (wm0c*t +wm0b)*t +wm0a;
00374   coeff[3] = (wp1c*t +wp1b)*t +wp1a;
00375 
00376   return 4;
00377 }
00378 
00379 int d1_c1_3ef(float a, float t, float *coeff) {
00380 
00381   wm3c = -OVER_12; wm3b =       0; wm3a =  0;
00382   wm2c =   11./12; wm2b = -OVER_6; wm2a = -OVER_12;
00383   wm1c =    -7./3; wm1b =    5./3; wm1a =  OVER_2_3;
00384   wm0c =     7./3; wm0b =      -3; wm0a =  0;
00385   wp1c =  -11./12; wp1b =    5./3; wp1a = -OVER_2_3;
00386   wp2c =  OVER_12; wp2b = -OVER_6; wp2a =  OVER_12;
00387 
00388   coeff[0] = (wm3c*t +wm3b)*t +wm3a;
00389   coeff[1] = (wm2c*t +wm2b)*t +wm2a;
00390   coeff[2] = (wm1c*t +wm1b)*t +wm1a;
00391   coeff[3] = (wm0c*t +wm0b)*t +wm0a;
00392   coeff[4] = (wp1c*t +wp1b)*t +wp1a;
00393   coeff[5] = (wp2c*t +wp2b)*t +wp2a;
00394 
00395   return 6;
00396 }
00397 
00398 int d1_c1_4ef(float a, float t, float *coeff) {
00399 
00400   wm3d =  OVER_12; wm3c =  -OVER_6; wm3b =        0; wm3a =  0;
00401   wm2d =    -0.25; wm2c =   13./12; wm2b = -OVER_12; wm2a = -OVER_12;
00402   wm1d =   OVER_6; wm1c =   -13./6; wm1b =     4./3; wm1a =  OVER_2_3 ;
00403   wm0d =   OVER_6; wm0c =     5./3; wm0b =     -2.5; wm0a =  0;
00404   wp1d =    -0.25; wp1c =  -OVER_3; wp1b =     4./3; wp1a = -OVER_2_3;
00405   wp2d =  OVER_12; wp2c = -OVER_12; wp2b = -OVER_12; wp2a =  OVER_12;
00406 
00407   coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00408   coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00409   coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00410   coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00411   coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00412   coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00413 
00414   return 6;
00415 }
00416 
00417 int d1_c2_1ef(float a, float t, float *coeff) {
00418 
00419   wm2e = -0.5; wm2d =  1; wm2c = 0; wm2b =  0; wm2a =    0;
00420   wm1e =  1.5; wm1d = -3; wm1c = 0; wm1b =  1; wm1a =  0.5;
00421   wm0e = -1.5; wm0d =  3; wm0c = 0; wm0b = -2; wm0a =    0;
00422   wp1e =  0.5; wp1d = -1; wp1c = 0; wp1b =  1; wp1a = -0.5;
00423 
00424   coeff[0] = ((wm2e*t +wm2d)*t*t +wm2b)*t +wm2a;
00425   coeff[1] = ((wm1e*t +wm1d)*t*t +wm1b)*t +wm1a;
00426   coeff[2] = ((wm0e*t +wm0d)*t*t +wm0b)*t +wm0a;
00427   coeff[3] = ((wp1e*t +wp1d)*t*t +wp1b)*t +wp1a;
00428 
00429   return 4;
00430 }
00431 
00432 int d1_c2_2ef(float a, float t, float *coeff) {
00433 
00434   wm2e = -0.5; wm2d =  1; wm2c = 0; wm2b =  0; wm2a =  0;
00435   wm1e =  1.5; wm1d = -3; wm1c = 0; wm1b =  1; wm1a =  0.5;
00436   wm0e = -1.5; wm0d =  3; wm0c = 0; wm0b = -2; wm0a =  0;
00437   wp1e =  0.5; wp1d = -1; wp1c = 0; wp1b =  1; wp1a = -0.5;
00438 
00439   coeff[0] = (((wm2e*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00440   coeff[1] = (((wm1e*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00441   coeff[2] = (((wm0e*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00442   coeff[3] = (((wp1e*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00443 
00444   return 4;
00445 }
00446 
00447 int d1_c2_3ef(float a, float t, float *coeff) {
00448 
00449   wm3e =  OVER_6; wm3d =   -0.25; wm3c =     0; wm3b =        0; wm3a =  0;
00450   wm2e =   -5./6; wm2d =  17./12; wm2c =  0.25; wm2b = -OVER_12; wm2a = -OVER_12;
00451   wm1e =    5./3; wm1d =  -19./6; wm1c =  -0.5; wm1b =     4./3; wm1a =  OVER_2_3;
00452   wm0e =   -5./3; wm0d =     3.5; wm0c =     0; wm0b =     -2.5; wm0a =  0;
00453   wp1e =    5./6; wp1d = -23./12; wp1c =   0.5; wp1b =     4./3; wp1a = -OVER_2_3;
00454   wp2e = -OVER_6; wp2d =   5./12; wp2c = -0.25; wp2b = -OVER_12; wp2a =  OVER_12;
00455 
00456   coeff[0] = (((wm3e*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00457   coeff[1] = (((wm2e*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00458   coeff[2] = (((wm1e*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00459   coeff[3] = (((wm0e*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00460   coeff[4] = (((wp1e*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00461   coeff[5] = (((wp2e*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00462 
00463   return 6;
00464 }
00465 
00466 int d1_c2_4ef(float a, float t, float *coeff) {
00467 
00468   wm3e =  OVER_6; wm3d =   -0.25; wm3c =     0; wm3b =        0; wm3a =  0;
00469   wm2e =   -5./6; wm2d =  17./12; wm2c =  0.25; wm2b = -OVER_12; wm2a = -OVER_12;
00470   wm1e =    5./3; wm1d =  -19./6; wm1c =  -0.5; wm1b =     4./3; wm1a =  OVER_2_3;
00471   wm0e =   -5./3; wm0d =     3.5; wm0c =     0; wm0b =     -2.5; wm0a =  0;
00472   wp1e =    5./6; wp1d = -23./12; wp1c =   0.5; wp1b =     4./3; wp1a = -OVER_2_3;
00473   wp2e = -OVER_6; wp2d =   5./12; wp2c = -0.25; wp2b = -OVER_12; wp2a =  OVER_12;
00474 
00475   coeff[0] = (((wm3e*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00476   coeff[1] = (((wm2e*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00477   coeff[2] = (((wm1e*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00478   coeff[3] = (((wm0e*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00479   coeff[4] = (((wp1e*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00480   coeff[5] = (((wp2e*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00481 
00482   return 6;
00483 }
00484 
00485 int d1_c3_1ef(float a, float t, float *coeff) {
00486 
00487   wm2f = -0.75; wm2e =  1.25; wm2d =    0; wm2c = 0; wm2b =     0; wm2a =  0;
00488   wm1f =  0.75; wm1e =     0; wm1d = -2.5; wm1c = 0; wm1b =  1.25; wm1a =  0.5;
00489   wm0f =  0.75; wm0e = -3.75; wm0d =    5; wm0c = 0; wm0b =  -2.5; wm0a =  0;
00490   wp1f = -0.75; wp1e =  2.5 ; wp1d = -2.5; wp1c = 0; wp1b =  1.25; wp1a = -0.5;
00491 
00492   coeff[0] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00493   coeff[1] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00494   coeff[2] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00495   coeff[3] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00496 
00497   return 4;
00498 }
00499 
00500 int d1_c3_2ef(float a, float t, float *coeff) {
00501 
00502   wm2g =  1; wm2f = -3; wm2e =  2.5; wm2b =  0; wm2a =  0;
00503   wm1g = -3; wm1f =  9; wm1e = -7.5; wm1b =  1; wm1a =  0.5;
00504   wm0g =  3; wm0f = -9; wm0e =  7.5; wm0b = -2; wm0a =  0;
00505   wp1g = -1; wp1f =  3; wp1e = -2.5; wp1b =  1; wp1a = -0.5;
00506 
00507   coeff[0] = (((wm2g*t +wm2f)*t +wm2e)*t*t*t +wm2b)*t +wm2a;
00508   coeff[1] = (((wm1g*t +wm1f)*t +wm1e)*t*t*t +wm1b)*t +wm1a;
00509   coeff[2] = (((wm0g*t +wm0f)*t +wm0e)*t*t*t +wm0b)*t +wm0a;
00510   coeff[3] = (((wp1g*t +wp1f)*t +wp1e)*t*t*t +wp1b)*t +wp1a;
00511 
00512   return 4;
00513 }
00514 
00515 int d1_c3_3ef(float a, float t, float *coeff) {
00516 
00517   wm3f =  3./16; wm3e =   -13./48; wm3d =       0; wm3c =     0; wm3b =       0; wm3a =  0;
00518   wm2f = -9./16; wm2e =     5./12; wm2d =  19./24; wm2c =  0.25; wm2b = - 7./48; wm2a = -OVER_12;
00519   wm1f =  3./8 ; wm1e =    25./24; wm1d = -19./6 ; wm1c =  -0.5; wm1b =  19./12; wm1a =  OVER_2_3;
00520   wm0f =  3./8 ; wm0e =   -35./12; wm0d =  19./4 ; wm0c =     0; wm0b = -23./8 ; wm0a =  0;
00521   wp1f = -9./16; wp1e =   115./48; wp1d = -19./6 ; wp1c =   0.5; wp1b =  19./12; wp1a = -OVER_2_3;
00522   wp2f =  3./16; wp2e = -OVER_2_3; wp2d =  19./24; wp2c = -0.25; wp2b = - 7./48; wp2a =  OVER_12;
00523 
00524   coeff[0] = ((((wm3f*t +wm3e)*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00525   coeff[1] = ((((wm2f*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00526   coeff[2] = ((((wm1f*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00527   coeff[3] = ((((wm0f*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00528   coeff[4] = ((((wp1f*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00529   coeff[5] = ((((wp2f*t +wp2e)*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00530 
00531   return 6;
00532 }
00533 
00534 int d1_c3_4ef(float a, float t, float *coeff) {
00535 
00536   wm3g = -0.25; wm3f =  0.75; wm3e = - 7./12; wm3d =         0; wm3c =     0; wm3b =        0; wm3a =  0;
00537   wm2g =  1.25; wm2f = -3.75; wm2e =  35./12; wm2d =    OVER_6; wm2c =  0.25; wm2b = -OVER_12; wm2a = -OVER_12;
00538   wm1g =  -2.5; wm1f =   7.5; wm1e = -35./6 ; wm1d = -OVER_2_3; wm1c =  -0.5; wm1b =     4./3; wm1a =  OVER_2_3;
00539   wm0g =   2.5; wm0f =  -7.5; wm0e =  35./6 ; wm0d =         1; wm0c =     0; wm0b =    -5./2; wm0a =  0;
00540   wp1g = -1.25; wp1f =  3.75; wp1e = -35./12; wp1d = -OVER_2_3; wp1c =   0.5; wp1b =     4./3; wp1a = -OVER_2_3;
00541   wp2g =  0.25; wp2f = -0.75; wp2e =   7./12; wp2d =    OVER_6; wp2c = -0.25; wp2b = -OVER_12; wp2a =  OVER_12;
00542 
00543   coeff[0] = (((((wm3g*t +wm3f)*t +wm3e)*t +wm3d)*t +wm3c)*t +wm3b)*t +wm3a;
00544   coeff[1] = (((((wm2g*t +wm2f)*t +wm2e)*t +wm2d)*t +wm2c)*t +wm2b)*t +wm2a;
00545   coeff[2] = (((((wm1g*t +wm1f)*t +wm1e)*t +wm1d)*t +wm1c)*t +wm1b)*t +wm1a;
00546   coeff[3] = (((((wm0g*t +wm0f)*t +wm0e)*t +wm0d)*t +wm0c)*t +wm0b)*t +wm0a;
00547   coeff[4] = (((((wp1g*t +wp1f)*t +wp1e)*t +wp1d)*t +wp1c)*t +wp1b)*t +wp1a;
00548   coeff[5] = (((((wp2g*t +wp2f)*t +wp2e)*t +wp2d)*t +wp2c)*t +wp2b)*t +wp2a;
00549 
00550   return 6;
00551 }
00552 
00553 int d1_cn_1ef(float a, float t, float *coeff) {
00554 
00555   coeff[0] =  0;
00556   coeff[1] =  1;
00557   coeff[2] = -1;
00558   coeff[3] =  0;
00559 
00560   return 4;
00561 }
00562 
00563 int d1_cn_2ef(float a, float t, float *coeff) {
00564 
00565   wm2b =  0.5; wm2a =  (  a    );
00566   wm1b = -0.5; wm1a = -(3*a-0.5);
00567   wm0b = -0.5; wm0a =  (3*a    );
00568   wp1b =  0.5; wp1a = -(  a+0.5);
00569 
00570   coeff[0] = wm2b*t +wm2a;
00571   coeff[1] = wm1b*t +wm1a;
00572   coeff[2] = wm0b*t +wm0a;
00573   coeff[3] = wp1b*t +wp1a;
00574 
00575   return 4;
00576 }
00577 
00578 int d1_cn_3ef(float a, float t, float *coeff) {
00579 
00580   wm2c =  0.5; wm2b =  0; wm2a = -OVER_6;
00581   wm1c = -1.5; wm1b =  1; wm1a =       1;
00582   wm0c =  1.5; wm0b = -2; wm0a =    -0.5;
00583   wp1c = -0.5; wp1b =  1; wp1a = -OVER_3;
00584 
00585   coeff[0] = (wm2c*t +wm2b)*t +wm2a;
00586   coeff[1] = (wm1c*t +wm1b)*t +wm1a;
00587   coeff[2] = (wm0c*t +wm0b)*t +wm0a;
00588   coeff[3] = (wp1c*t +wp1b)*t +wp1a;
00589 
00590   return 4;
00591 }
00592 
00593 int d1_cn_4ef(float a, float t, float *coeff) {
00594 
00595   wm3d =  OVER_12; wm3c =  (   a     ); wm3b = -(   a+ OVER_6); wm3a =  0;
00596   wm2d =    -0.25; wm2c = -( 5*a-0.25); wm2b =  ( 5*a+   0.75); wm2a = -OVER_12;
00597   wm1d =   OVER_6; wm1c =  (10*a- 0.5); wm1b = -(10*a+ OVER_3); wm1a =  OVER_2_3;
00598   wm0d =   OVER_6; wm0c = -(10*a     ); wm0b =  (10*a-   5./6); wm0a = 0;
00599   wp1d =    -0.25; wp1c =  ( 5*a+ 0.5); wp1b = -( 5*a-    0.5); wp1a = -OVER_2_3;
00600   wp2d =  OVER_12; wp2c = -(   a+0.25); wp2b =  (   a+OVER_12); wp2a =  OVER_12;
00601 
00602   coeff[0] = ((wm3d*t +wm3c)*t +wm3b)*t +wm3a;
00603   coeff[1] = ((wm2d*t +wm2c)*t +wm2b)*t +wm2a;
00604   coeff[2] = ((wm1d*t +wm1c)*t +wm1b)*t +wm1a;
00605   coeff[3] = ((wm0d*t +wm0c)*t +wm0b)*t +wm0a;
00606   coeff[4] = ((wp1d*t +wp1c)*t +wp1b)*t +wp1a;
00607   coeff[5] = ((wp2d*t +wp2c)*t +wp2b)*t +wp2a;
00608 
00609   return 6;
00610 }
00611 } // end of namespace

Generated on Wed Dec 15 21:20:32 2004 for vuVolume by  doxygen 1.3.9.1