Newer
Older
/*
pattern.h
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*
* Part of: SExtractor
*
* Authors: E.BERTIN (IAP)
*
* Contents: Include file for pattern.c.
*
* Last modify: 18/11/2009
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
#ifndef _PROFIT_H_
#include "profit.h"
#endif
#ifndef _PATTERN_H_
#define _PATTERN_H_
/*-------------------------------- flags ------------------------------------*/
/*-------------------------------- macros -----------------------------------*/
/*----------------------------- Internal constants --------------------------*/
#define PATTERN_FMAX 4 /* Maximum pattern angular frequency */
#define PATTERN_NCOMP 16 /* Default number of components (radii) */
#define PATTERN_SCALE 5.0 /* Pattern scale in units of r_eff */
#define PATTERN_MARGIN 0.2 /* Pattern margin in fractions of radius */
#define PATTERN_BTMAX 0.6 /* Maximum B/T for pure disk scaling */
/* NOTES:
One must have: PATTERN_SIZE > 1
PATTERN_SCALE > 0.0
PATTERN_BTMAX < 1.0
*/
/*--------------------------------- typedefs --------------------------------*/
typedef enum {PATTERN_QUADRUPOLE, PATTERN_OCTOPOLE,
PATTERN_POLARFOURIER, PATTERN_POLARSHAPELETS,
PATTERN_NPATTERNS}
pattypenum; /* Pattern code */
/*--------------------------- structure definitions -------------------------*/
typedef struct
{
pattypenum type; /* Pattern code */
int ncomp; /* Number of independent components */
int nmodes; /* Number of modes per component */
int nfreq; /* Number of waves per component */
float x[2]; /* Coordinate vector */
float rmax; /* Largest radius in units of scale */
float *r; /* Reduced radius */
float *norm; /* Pattern vector norm */
float *coeff; /* Fitted pattern coefficients */
float *mcoeff; /* Modulus from pattern coefficients */
float *acoeff; /* Argument from pattern coefficients */
float *modpix; /* Pattern pixmaps */
PIXTYPE *lmodpix; /* Low resolution pattern pixmaps */
int size[3]; /* Pixmap size for each axis */
} patternstruct;
/*----------------------------- Global variables ----------------------------*/
/*-------------------------------- functions --------------------------------*/
patternstruct *pattern_init(profitstruct *profit, pattypenum ptype, int nvec);
float pattern_spiral(patternstruct *pattern);
void pattern_compmodarg(patternstruct *pattern,profitstruct *profit),
pattern_create(patternstruct *pattern, profitstruct *profit),
pattern_end(patternstruct *pattern),
pattern_fit(patternstruct *pattern, profitstruct *profit);
#endif