From ee7136039eb5d43fbd3e8a77cbdb8fea94b98468 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Tue, 12 Apr 2011 13:22:28 +0200 Subject: Add get_q_for_panel() --- src/detector.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'src/detector.c') diff --git a/src/detector.c b/src/detector.c index 0b4bf2fa..0caf621e 100644 --- a/src/detector.c +++ b/src/detector.c @@ -63,25 +63,18 @@ static int dir_conv(const char *a, double *sx, double *sy) } -struct rvec get_q(struct image *image, double fs, double ss, - double *ttp, double k) +struct rvec get_q_for_panel(struct panel *p, double fs, double ss, + double *ttp, double k) { struct rvec q; double twotheta, r, az; double rx, ry; - struct panel *p; double xs, ys; - /* Determine which panel to use */ - const unsigned int x = fs; - const unsigned int y = ss; - p = find_panel(image->det, x, y); - assert(p != NULL); - /* Convert xs and ys, which are in fast scan/slow scan coordinates, * to x and y */ - xs = (fs-(double)p->min_fs)*p->fsx + (ss-(double)p->min_ss)*p->ssx; - ys = (fs-(double)p->min_fs)*p->fsy + (ss-(double)p->min_ss)*p->ssy; + xs = fs*p->fsx + ss*p->ssx; + ys = fs*p->fsy + ss*p->ssy; rx = (xs + p->cnx) / p->res; ry = (ys + p->cny) / p->res; @@ -101,6 +94,22 @@ struct rvec get_q(struct image *image, double fs, double ss, } +struct rvec get_q(struct image *image, double fs, double ss, + double *ttp, double k) +{ + struct panel *p; + const unsigned int fsi = fs; + const unsigned int ssi = ss; /* Explicit rounding */ + + /* Determine which panel to use */ + p = find_panel(image->det, fsi, ssi); + assert(p != NULL); + + return get_q_for_panel(p, fs-(double)p->min_fs, ss-(double)p->min_ss, + ttp, k); +} + + int in_bad_region(struct detector *det, double fs, double ss) { double rx, ry; -- cgit v1.2.3