XbArray.cc
Go to the documentation of this file.
1 
5 #include "XbArray.h"
6 #include "Xb.h"
7 #include <cstdlib>
8 #include <cstdio>
9 
10 char *neighbour=NULL;
11 char *distcrown=NULL;
12 char *exists=NULL;
13 
14 int crown(double x1, double x2, double y1, double y2) {
15  double d1=fabs(y1-y2)/2600+fabs(x1-x2)/1500;
16  double d2=fabs(y1-y2)/1300;
17  double max=(d1>d2 ? d1 : d2);
18  int ret=(int)(floor(max));
19  if (max-ret>0.2) ret++; // rounding at 0.2 crowns, ie 300 m
20  return ret;
21 }
22 
24  if (neighbour) free(neighbour);
25  if (exists) free(exists);
26  if (distcrown) free(distcrown);
27  neighbour=(char *)malloc(ROW*ROW*sizeof(char));
28  distcrown=(char *)malloc(ROW*ROW*sizeof(char));
29  exists=(char *)malloc(ROW*sizeof(char));
30  // An unknown or FAKE station has no neighbour, so it will never trigger.
31  for (int i=0;i<ROW;i++) {
32  exists[i]=0;
33  for (int j=0;j<ROW;j++) {
34  neighbour[i*ROW+j]=0;
35  distcrown[i*ROW+j]=99;
36  }
37  }
38  // for the known ones
39  for (int i=0;i<nstat;i++) {
40  exists[array[i].Id]=1;
41  for (int j=0;j<nstat;j++) {
42  neighbour[array[i].Id*ROW+array[j].Id]=crown(array[i].Easting,array[j].Easting,array[i].Northing,array[j].Northing);
43  distcrown[array[i].Id*ROW+array[j].Id]=crown(array[i].Easting,array[j].Easting,array[i].Northing,array[j].Northing);
44  if(neighbour[array[i].Id*ROW+array[j].Id]>4) neighbour[array[i].Id*ROW+array[j].Id]=0;
45  }
46  }
47  // DOUBLETS must not be neighbours because of high coincidence rate
49  neighbour[DIA*ROW+NOCHE]=neighbour[NOCHE*ROW+DIA]=0;
51  // CDAS IS GOING DOWN NOW!!!! XB - 08-07-08 --- Turned off 09-07-08
52  // 710 Oye Olentangy 1110
53  // 1575 Vanesa Olentangy 2020
54  // 1618 Voldemort Olentangy 2090
55 //#define OYE 710
56 //#define VANESA 1575
57 //#define VOLDEMORT 1618
58  //neighbour[OYE*ROW+VANESA]=neighbour[VANESA*ROW+OYE]=1;
59  //neighbour[VOLDEMORT*ROW+VANESA]=neighbour[VANESA*ROW+VOLDEMORT]=1;
60  //neighbour[OYE*ROW+VOLDEMORT]=neighbour[VOLDEMORT*ROW+OYE]=1;
61 }
struct Station * array
int crown(double x1, double x2, double y1, double y2)
Definition: XbArray.cc:14
int Id
Definition: XbArray.h:11
char * exists
Definition: XbArray.cc:12
#define max(a, b)
#define MOULIN
Definition: XbArray.h:29
char * distcrown
Definition: XbArray.cc:11
#define DIA
Definition: XbArray.h:27
void BuildNeighbour()
Definition: XbArray.cc:23
#define ROW
Definition: XbArray.h:4
char * neighbour
Definition: XbArray.cc:10
#define ROUGE
Definition: XbArray.h:30
#define MIRANDA
Definition: XbArray.h:26
#define NOCHE
Definition: XbArray.h:28
#define CARMEN
Definition: XbArray.h:25

, generated on Tue Sep 26 2023.