#include #include #include #include #include "mucal.h" #include "panel.h" /* ********************************************** */ int facet_geo( facet *FACET, float panel_new[], int layer_no, int facet_no) { float xx, yy, uu, vv, sqr3h, XC, YC, Rmax, Rmin, facet_sep, cameraH, lensRadius; sqr3h = sqrt(3.0) / 2.0; if (layer_no == 0) { /* Layer #0 */ XC = panel_new[3]; /* Center x-coordinate */ YC = panel_new[4]; /* Center y-coordinate */ } else { if (layer_no == 1) { /* Layer #1 */ XC = panel_new[5]; /* Center x-coordinate */ YC = panel_new[6]; /* Center y-coordinate */ } else { /* Layer #2 */ XC = panel_new[16]; /* Center x-coordinate */ YC = panel_new[17]; /* Center y-coordinate */ } } cameraH = panel_new[7]; lensRadius = panel_new[8] / 2.0; facet_sep = panel_new[14]; Rmax = (panel_new[1] - facet_sep) / 2.0; Rmin = (panel_new[15] + facet_sep) / 2.0; uu = (float)(FACET->u); vv = (float)(FACET->v); xx = (uu + vv * 0.5 - XC) * facet_sep; yy = (vv * sqr3h - YC) * facet_sep; FACET->x = xx; FACET->y = yy; FACET->r = (float)(sqrt(xx*xx + yy*yy)); FACET->thetaB = 0.5 * (float)(atan(FACET->r / panel_new[0])); /* thetaB in Radians */ FACET->displacement = 0.0; FACET->nOption = -1; FACET->Z = -1; FACET->E[0] = FACET->E[1] = FACET->E[2] = 0.0; FACET->dE[0] = FACET->dE[1] = FACET->dE[2] = 0.0; if ((FACET->r > Rmin) && (fabs(FACET->r) < Rmax)) {FACET->nOption = 0; FACET->Z = 0;} facet_no++; return facet_no; } /* ********************************************** */