9 #define MINFLOAT (1e-31)
14 #define CONTOUR_ACCURACY (MINFLOAT)
18 typedef long contourParaTypeInteger;
19 typedef double contourParaTypeReal;
21 typedef struct contourParaElement {
22 contourParaTypeInteger n;
23 contourParaTypeReal Min;
24 contourParaTypeReal Max;
25 contourParaTypeReal d;
28 typedef struct contourImage {
29 contourParaTypeReal* image;
30 contourParaTypeReal* image2;
36 contourParaTypeReal section;
39 typedef struct contourPoint {
40 contourParaTypeReal x;
41 contourParaTypeReal y;
42 contourParaTypeReal z;
45 typedef struct contourALine contourALine;
54 typedef struct contourLine contourLine;
57 contourALine* current;
58 contourParaTypeInteger n;
62 typedef struct contourLines contourLines;
66 contourParaTypeInteger n;
70 typedef struct contourLinesSet contourLinesSet;
71 struct contourLinesSet {
73 contourLines* current;
74 contourParaTypeInteger n;
75 contourLinesSet* next;
78 typedef struct contourArgs {
79 contourParaTypeReal f00; /* For 2D Contour*/
80 contourParaTypeReal f01;
81 contourParaTypeReal f11;
82 contourParaTypeReal f10;
83 contourParaTypeReal f000; /* For 3D Contour */
84 contourParaTypeReal f001;
85 contourParaTypeReal f010;
86 contourParaTypeReal f011;
87 contourParaTypeReal f100;
88 contourParaTypeReal f101;
89 contourParaTypeReal f110;
90 contourParaTypeReal f111;
91 contourParaTypeReal x;
92 contourParaTypeReal y;
93 contourParaTypeReal z;
94 contourParaTypeReal dx;
95 contourParaTypeReal dy;
96 contourParaTypeReal dz;
99 typedef enum contourFlag {
107 /* prototype begin */
108 /* search contour lines in a boxel */
109 extern void createContourALine(contourLine* ls, contourArgs c);
111 /* create contour lines in order */
112 extern void createContourLine (contourLines* ls, contourLine* l);
114 /* craete contourLines at each section */
115 extern void createContourLines(contourLines* ls, contourImage image);
117 /* create contourLines at all sections */
118 extern void createContour(contourLinesSet* lsset, contourImage image, contourParaTypeReal level, contourFlag flag);
120 extern void appendContourLine0(contourLine* l, contourParaTypeReal xc1, contourParaTypeReal yc1, contourParaTypeReal xc2, contourParaTypeReal yc2, contourParaTypeReal z);
121 extern void appendContourLine1(contourLine* l, contourLine* als);
123 extern void lmrc2contour(contourLinesSet* c, mrcImage* m, contourParaTypeReal l, contourFlag f, long mode);
126 #endif /* CONTOUR_H */