Initial snark14m import
[snark14.git] / src / snark / bpseudo.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/bpseudo.cpp $
5  $LastChangedRevision: 85 $
6  $Date: 2014-07-02 16:07:08 -0400 (Wed, 02 Jul 2014) $
7  $Author: agulati $
8  ***********************************************************
9  */
10
11 // COMPUTE THE PSEUDO PROJECTION OF RAY NR IN PROJECTION NP OF
12 // THE PICTURE PICT IN THE BLOB CASE.
13 #include <cstdio>
14
15 #include "blkdta.h"
16 #include "modefl.h"
17 #include "blob.h"
18 #include "uiod.h"
19
20 REAL Blob_class::bpseudo(REAL* pict, INTEGER np, INTEGER nr, INTEGER* list, REAL* weight, INTEGER* numb, REAL* snorm, BOOLEAN line, BOOLEAN constr)
21 {
22         int nb, k;
23         REAL pictk;
24         REAL sum = 0.0;
25
26         if (!line)
27         {
28                 Blob.bray(np, nr, list, weight, numb, snorm);
29         }
30         else
31         {
32                 Blob.bwray(np, nr, list, weight, numb, snorm);
33         }
34
35         if (*numb != 0)
36         {
37                 for (nb = 0; nb < *numb; nb++)
38                 {
39                         k = list[nb];
40                         pictk = pict[k];
41                         if (constr)
42                         {
43                                 if (Modefl.lofl)
44                                         pictk = MAX0(pictk, Modefl.lower);
45                                 if (Modefl.upfl)
46                                         pictk = MIN0(pictk, Modefl.upper);
47                         }
48                         sum += pictk * weight[nb];
49                 }
50         }
51 //  pseudo=sum;
52
53         if (trace > 5)
54         {
55                 fprintf(output,
56                                 "\n          bpseudo  np = %5i  nr = %5i  bpseudo = %9.4f", np,
57                                 nr, sum);
58         }
59         return sum;
60 }