00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef EXTERN
00043 #ifdef _DVS_
00044 #define EXTERN
00045 #else
00046 #define EXTERN extern
00047 #endif
00048 #endif
00049
00050 typedef struct
00051 {
00052 int edgeno;
00053 int fg_edge;
00054 real r;
00055 real r1;
00056 real r2;
00057 real d1;
00058 real d2;
00059 } RND;
00060
00061 #define MSD_ROUND_E_ORIGINAL 0
00062 #define MSD_ROUND_E_FASE1 1
00063 #define MSD_ROUND_E_FASE2 2
00064 #define MSD_ROUND_E_FASE3 3
00065 #define MSD_ROUND_V_ORIGINAL 0
00066 #define MSD_ROUND_V_FASE1 1
00067 #define MSD_ROUND_V_FASE2 2
00068 #define MSD_ROUND_V_FASE3 3
00069
00070 #define MSD_ROUND_FLAG_E0 0
00071 #define MSD_ROUND_FLAG_E1 1
00072 #define MSD_ROUND_FLAG_E2 2
00073 #define MSD_ROUND_FLAG_E3 3
00074 #define MSD_ROUND_FLAG_E4 4
00075 #define MSD_ROUND_FLAG_V0 0
00076 #define MSD_ROUND_FLAG_V1 1
00077
00078
00079 EPTYPE sedge(SPTYPE, Id);
00080 void MSD_execRound(void);
00081 int MSD_highRound(char *, int, int);
00082
00083 int MSD_lowRound(SPTYPE);
00084 Id getmaxct(SPTYPE);
00085 int leval_edge(SPTYPE, int);
00086 void MSD_execEvalEdge(void);
00087
00088 int lrnd_alledges(SPTYPE, real);
00089 void MSD_execRndAllEdges(void);
00090
00091
00092 int GeneratingVertices_edges(SPTYPE);
00093 int MakingEdges_tables(SPTYPE);
00094 int MakingVertices_edges(SPTYPE);
00095
00096
00097 int EdgeGeneration_faces(SPTYPE);
00098 int GenerationEdges_corners(SPTYPE);
00099 int GenerationEdges_nvertices(SPTYPE);
00100 void MakeEdgeFlatCorner(SPTYPE, HPTYPE);
00101 HPTYPE MakeEdgeConvexCorner(SPTYPE, HPTYPE);
00102 void MakeEdgeConcaveCorner(SPTYPE, HPTYPE);
00103 void GetNxtVertex(HPTYPE, vector);
00104 void GetPrvVertex(HPTYPE, vector);
00105 int cont_point(VPTYPE, VPTYPE, vector);
00106
00107
00108 int GenerationCurved_edges(SPTYPE);
00109 int EdgesAttachedOriginal_vertex(SPTYPE);
00110 VPTYPE edv1(VPTYPE);
00111 VPTYPE edv2(SPTYPE, VPTYPE);
00112 VPTYPE edv3(SPTYPE, VPTYPE);
00113 VPTYPE edv4(SPTYPE, VPTYPE);
00114 int EdgeAttached_vertexfase1(SPTYPE);
00115
00116
00117 void calc_point(vector, vector, real, vector);
00118 real angle_edge(HPTYPE);
00119 int GetEdges(VPTYPE, int);
00120 void CLC(SPTYPE, HPTYPE, vector, vector, vector);
00121 void lgeo_arc(vector, vector, vector, vector, vector, real, real);
00122 void _line(vector, real, vector, real, vector, vector, vector);
00123 void line_parallel(vector, vector, vector, vector, vector, real);
00124 real calc_t(vector, vector, vector);
00125 void line_inter(vector, vector, vector, vector, vector);
00126 void point_perp(vector, vector, vector, vector, real);