Contour(API)

From EosPedia
Jump to: navigation, search

DataExpress/Contour is API for the calculation of contour. It is used by psFile(API), etc..

constant

#define MINFLOAT (1e-31)
#define CONTOUR_ACCURACY  (MINFLOAT)

struct

typedef long   contourParaTypeInteger;
typedef double contourParaTypeReal;
typedef struct contourParaElement {
    contourParaTypeInteger n;
    contourParaTypeReal    Min;
    contourParaTypeReal    Max;
    contourParaTypeReal    d;
} contourParaElement;
typedef struct contourImage {
    contourParaTypeReal* image;
    contourParaTypeReal* image2;
    contourParaElement   x;
    contourParaElement   y;
    contourParaElement   z;
    contourParaElement   w;
    contourParaElement   h;
    contourParaTypeReal  section;
} contourImage;
typedef struct contourPoint {
    contourParaTypeReal    x;
    contourParaTypeReal    y;
    contourParaTypeReal    z;
} contourPoint;
typedef struct contourALine contourALine;
struct contourALine {
    contourALine* before;
    contourPoint p0;
    contourPoint p1;
    contourPoint p2;
    contourALine* next;
};
typedef struct contourLine contourLine;
struct contourLine {
    contourALine* top;
    contourALine* current;
    contourParaTypeInteger n;
    contourLine*  next;
};
typedef struct contourLines contourLines;
struct contourLines {
    contourLine*  top;
    contourLine*  current;
    contourParaTypeInteger n;
    contourLines* next;
};
typedef struct contourLinesSet contourLinesSet;
struct contourLinesSet {
    contourLines*  top;
    contourLines*  current;
    contourParaTypeInteger n;
    contourLinesSet* next;
};
typedef struct contourArgs {
    contourParaTypeReal f00;  /* For 2D Contour*/
    contourParaTypeReal f01;
    contourParaTypeReal f11;
    contourParaTypeReal f10;
    contourParaTypeReal f000; /* For 3D Contour */
    contourParaTypeReal f001;
    contourParaTypeReal f010;
    contourParaTypeReal f011;
    contourParaTypeReal f100;
    contourParaTypeReal f101;
    contourParaTypeReal f110;
    contourParaTypeReal f111;
    contourParaTypeReal x;
    contourParaTypeReal y;
    contourParaTypeReal z;
    contourParaTypeReal dx;
    contourParaTypeReal dy;
    contourParaTypeReal dz;
} contourArgs;
typedef enum contourFlag {
    contourFlagXSection,
    contourFlagYSection,
    contourFlagZSection,
    contourFlag3D
} contourFlag;

API

search contour lines in a boxel

extern void createContourALine(contourLine* ls, contourArgs c);

create contour lines in order

extern void createContourLine (contourLines*  ls, contourLine* l);

craete contourLines at each section

extern void createContourLines(contourLines* ls, contourImage image);

create contourLines at all sections

extern void createContour(contourLinesSet* lsset, contourImage image, contourParaTypeReal level, contourFlag flag);
extern void appendContourLine0(contourLine* l, contourParaTypeReal xc1, contourParaTypeReal yc1, contourParaTypeReal xc2, contourParaTypeReal yc2, contourParaTypeReal z);
extern void appendContourLine1(contourLine* l, contourLine* als);
extern void lmrc2contour(contourLinesSet* c, mrcImage* m, contourParaTypeReal l, contourFlag f, long mode);