Initial snark14m import
[snark14.git] / src / snark / pseudo.cpp
1 /*      
2  ***********************************************************
3  $SNARK_Header: S N A R K  1 4 - A PICTURE RECONSTRUCTION PROGRAM $
4  $HeadURL: svn://dig.cs.gc.cuny.edu/snark/trunk/src/snark/pseudo.cpp $
5  $LastChangedRevision: 80 $
6  $Date: 2014-07-01 21:01:54 -0400 (Tue, 01 Jul 2014) $
7  $Author: agulati $
8  ***********************************************************
9  */
10
11 // COMPUTE THE PSEUDO PROJECTION OF RAY NR IN PROJECTION NP OF
12 // THE PICTURE PICT.
13 #include <cstdio>
14
15 #include "blkdta.h"
16 #include "modefl.h"
17 #include "uiod.h"
18
19 #include "ray.h"
20 #include "wray.h"
21 #include "pseudo.h"
22
23 REAL pseudo(REAL* pict, INTEGER np, INTEGER nr, INTEGER* list, REAL* weight,
24                 INTEGER* numb, REAL* snorm, BOOLEAN line, BOOLEAN constr)
25 {
26
27         INTEGER nb, k;
28         REAL pictk;
29         REAL sum = 0.0;
30
31         if (!line)
32         {
33                 ray(np, nr, list, weight, numb, snorm);
34         }
35         else
36         {
37                 wray(np, nr, list, weight, numb, snorm);
38         }
39
40         if (*numb != 0)
41         {
42                 for (nb = 0; nb < *numb; nb++)
43                 {
44                         k = list[nb];
45                         pictk = pict[k];
46                         if (constr)
47                         {
48                                 if (Modefl.lofl)
49                                         pictk = MAX0(pictk, Modefl.lower);
50                                 if (Modefl.upfl)
51                                         pictk = MIN0(pictk, Modefl.upper);
52                         }
53                         sum += pictk * weight[nb];
54                 }
55         }
56         if (trace > 5)
57         {
58                 fprintf(output,
59                                 "\n          pseudo  np = %5i  nr = %5i  pseudo = %9.4f\n", np,
60                                 nr, sum);
61         }
62         return sum;
63 }