#include #include #include #include #include #include "structs.h" int istrunc (char *objtype); float pa (int mode, float angle); void printpar (int lowx, int lowy, struct fitpars *fpar) { void get_fparc (char *par, float a, int ia, int natspc); void get_eparc (char *par, float a, int ia, int natspc); extern char device[]; extern int (*pfunc)(const char *, ...); extern struct inpars input; extern float xskycent, yskycent; struct fitpars *h; float x, y, a3; int noff = 0, i, c, natspc; char inner[80], outer[80], *cptr; char xc[80], yc[80], parc[80], par2c[80]; while (fpar != NULL) { if (strncmp(fpar->objtype, "sersic", 6)==0 || strncmp(fpar->objtype, "moffat", 6)==0 || strncmp(fpar->objtype, "devauc", 6)==0 || strncmp(fpar->objtype, "expdisk", 7)==0 || strncmp(fpar->objtype, "gaussian", 8)==0 || strncmp(fpar->objtype, "sinc", 4)==0 || strncmp(fpar->objtype, "psf", 3)==0 || strncmp(fpar->objtype, "edgedisk", 8)==0 || strncmp(fpar->objtype, "nuker", 5)==0 || strncmp(fpar->objtype, "king", 4)==0 || strncmp(fpar->objtype, "ferrer", 6)==0) { x = fpar->a[1] + lowx - 1.; y = fpar->a[2] + lowy - 1.; get_fparc (xc, x, fpar->ia[1], 8); get_fparc (yc, y, fpar->ia[2], 8); pfunc (" %-10s: (%6s, %6s)", fpar->objtype, xc, yc); for (i=3; i <= 10; i++) { /*------------------------------------\ | Most radial profile functions.... | \------------------------------------*/ if (strncmp(fpar->objtype, "sersic", 6)==0 || strncmp(fpar->objtype, "moffat", 6)==0 || strncmp(fpar->objtype, "devauc", 6)==0 || strncmp(fpar->objtype, "expdisk", 7)==0 || strncmp(fpar->objtype, "gaussian", 8)==0 || strncmp(fpar->objtype, "sinc", 4)==0 || strncmp(fpar->objtype, "psf", 3)==0 || strncmp(fpar->objtype, "edgedisk", 8)==0) { if (fpar->ia[i] > -1) { if (i==3 || i==5 || i==9) natspc = 7; else if (i==4) natspc = 9; else if (i==10) natspc = 8; get_fparc (parc, fpar->a[i], fpar->ia[i], natspc); pfunc (" %s", parc); } else if (i == 5 && (strncmp(fpar->objtype, "devauc", 6)==0 || strncmp(fpar->objtype, "expdisk", 7)==0 || strncmp(fpar->objtype, "gaussian", 8)==0 || strncmp(fpar->objtype, "sinc", 4)==0)) pfunc (" ---"); else if (i > 6 && strncmp(fpar->objtype, "psf", 3)==0) pfunc (" ---"); else if (i == 6 && strncmp(fpar->objtype, "edgedisk", 8)==0) pfunc (" ---"); }; /*--------------------------------------\ | Nuker, King && Ferrer functions.... | \--------------------------------------*/ if (strncmp(fpar->objtype, "nuker", 5)==0 || strncmp(fpar->objtype, "king", 4)==0 || strncmp(fpar->objtype, "ferrer", 6)==0) { if (fpar->ia[i] > -1) { if (strncmp(fpar->objtype, "nuker", 5)==0) { if (i==3 || i== 5 || i==9) natspc = 5; else if (i==4) natspc = 6; else if (i==6 || i==7) natspc = 4; else if (i==10) natspc = 8; } else if (strncmp(fpar->objtype, "king", 4)==0 || strncmp(fpar->objtype, "ferrer", 6)==0) { if (i==3 || i==9) natspc = 5; else if (i==4 || i==5) natspc = 7; else if (i==6) natspc = 5; else if (i==10) natspc = 8; }; get_fparc (parc, fpar->a[i], fpar->ia[i], natspc); pfunc (" %s", parc); }; }; }; pfunc ("\n"); }; /*------\ | Sky | \------*/ if (strncmp(fpar->objtype, "sky", 3) ==0) { pfunc (" sky : [%6.2f, %6.2f]", xskycent + lowx - 1, yskycent + lowy - 1); for (i=1; i <= 3; i++) { if (fabs(fpar->a[i]) > 1.) { get_fparc (parc, fpar->a[i], fpar->ia[i], 7); pfunc (" %s", parc); } else { get_eparc (parc, fpar->a[i], fpar->ia[i], 7); pfunc (" %s", parc); }; }; pfunc ("\n"); }; /*-----------------------\ | Truncation functions | \-----------------------*/ if (istrunc(fpar->objtype)) { if ((cptr = index (fpar->objtype, '2')) != NULL) { if (rindex (cptr, 'b') != NULL) pfunc (" %s : ", fpar->objtype); else pfunc (" %s : ", fpar->objtype); } else if ((cptr = index (fpar->objtype, '-')) != NULL) pfunc (" %s : ", fpar->objtype); else pfunc (" %s : ", fpar->objtype); if (fpar->inner[0] != 0) { pfunc ("[%d", fpar->inner[1]); for (i=2; i <= fpar->inner[0]; i++) pfunc (", %d", fpar->inner[i]); pfunc ("] "); } else pfunc ("[0] "); if (fpar->outer[0] != 0) { pfunc ("[%d", fpar->outer[1]); for (i=2; i <= fpar->outer[0]; i++) pfunc (", %d", fpar->outer[i]); pfunc ("] "); } else pfunc ("[0] "); if (fpar->ia[1] != -1 || fpar->ia[2] != -1) { x = fpar->a[1] + lowx - 1.; y = fpar->a[2] + lowy - 1.; get_fparc (xc, x, fpar->ia[1], 7); get_fparc (yc, y, fpar->ia[2], 7); pfunc (" (%6s, %6s) ", xc, yc); }; for (i=4; i <= 10; i++) { natspc = 7; if (fpar->ia[i] > -1) { get_fparc (parc, fpar->a[i], fpar->ia[i], natspc); pfunc (" %s", parc); }; }; pfunc ("\n"); }; /*------------------------\ | High order parameters | \------------------------*/ if (fpar->high != NULL) { h = fpar->high; while (h != NULL) { c = 0; /*---------------------\ | Rotation functions | \---------------------*/ if (strncmp (h->objtype, "power", 5) == 0 || strncmp (h->objtype, "log", 3) == 0) { pfunc (" %-6s :", h->objtype); for (i=1; i <= 10; i++) { if (h->ia[i] > -1) { if ((i>=1 && i<=2)) natspc = 9; if (i==3 || i == 10) natspc = 8; if (i==4) natspc = 9; else if (i==9) natspc = 7; get_fparc (parc, h->a[i], h->ia[i], natspc); pfunc (" %s", parc); }; if (i==6) pfunc (" ---"); }; pfunc ("\n"); }; /*----------------\ | Bending modes | \----------------*/ if (strncmp (h->objtype, "bend", 4) == 0) { for (i=1; i <= h->npars; i++) { if (!(h->a[i] == 0 && h->ia[i] == 0) && h->ia[i] !=-1) { if (c == 0) pfunc (" bend : "); get_eparc (parc, h->a[i], h->ia[i], 9); pfunc ("(%d: %s) ", i, parc); c++; }; if (c == 4) { pfunc ("\n"); c = 0; }; }; if (c%4 != 0) pfunc ("\n"); }; /*----------------\ | Fourier modes | \----------------*/ if (strncmp (h->objtype, "four", 4) == 0) { for (i=1; i <= h->npars; i=i+2) { if (!(h->a[i] == 0 && h->ia[i] == 0) && h->ia[i] !=-1) { if (c == 0) pfunc (" fourier : "); h->a[i+1] = pa (i/2+1, h->a[i+1]); get_fparc (parc, h->a[i], h->ia[i], 6); get_fparc (par2c, h->a[i+1], h->ia[i+1], 7); pfunc ("(%d:%s, %s) ", i/2+1, parc, par2c); c++; }; if (c == 3) { pfunc ("\n"); c = 0; }; }; if (c%3 != 0) pfunc ("\n"); }; /*---------------------\ | Diskyness/boxyness | \---------------------*/ if (strncmp (h->objtype, "C0", 2) == 0 ) { get_fparc (parc, h->a[1], h->ia[1], 6); pfunc (" c0 : %s \n", parc); }; h = h->next; }; }; fpar = fpar->next; }; if (strncmp (device, "curses", 6) == 0) refresh(); return; } /*===========================================================================*/ void get_fparc (char *par, float a, int ia, int natspc) { int i, len; char tpar[80]; if (ia == 0) sprintf (par, "[%.2f]", a); else if (ia == 1) sprintf (par, "%.2f", a); else if (ia == 2) sprintf (par, "{%.2f}", a); len = strlen (par); for (i=1; i <= (natspc - len); i++) { sprintf (tpar, " %s", par); strcpy (par, tpar); }; } /*===========================================================================*/ void get_eparc (char *par, float a, int ia, int natspc) { int i, len; char tpar[80]; if (ia == 0) sprintf (par, "[%.2e]", a); else if (ia == 1) sprintf (par, "%.2e", a); else if (ia == 2) sprintf (par, "{%.2e}", a); len = strlen (par); for (i=1; i <= (natspc - len); i++) { sprintf (tpar, " %s", par); strcpy (par, tpar); }; }