diff --git a/EGkIntersTriaTria.h b/EGkIntersTriaTria.h index 06f6692..8acc6bf 100644 --- a/EGkIntersTriaTria.h +++ b/EGkIntersTriaTria.h @@ -27,36 +27,22 @@ //----------------------------------------------------------------------------- EGK_EXPORT int IntersTriaTria( const Triangle3d& trTria1, const Triangle3d& trTria2, - Point3d& ptInt, Point3d& ptInt2, TRIA3DVECTOR& vTria) ; + Point3d& ptInt, Point3d& ptInt2, TRIA3DVECTOR& vTria, bool bSpecial = false) ; //----------------------------------------------------------------------------- -// Tipo di intersezione triangolo-triangolo -enum IntTriaTriaType { ITTT_NO = 0, // non c'è intersezione - ITTT_OVERLAPS = 1, // i triangoli si sovrappongono (i triangoli del poligono sono in vTria) - ITTT_VERT = 2, // l'intersezione coincide con un vertice di un triangolo (ptInt) - ITTT_PNT = 3, // l'intersezione è un punto sui lati di entrambi i triangoli (ptInt) - ITTT_EDGE = 4, // l'intersezione coincide con un lato di un triangolo (ptInt, ptInt2) - ITTT_YES = 5} ; // l'intersezione è un segmento (ptInt, ptInt2) -// Tipi estesi -enum IntTriaTriaSpecialType { ITTTS_NO = 0, // non c'è intersezione - ITTTS_OVERLAPS = 1, // i triangoli si sovrappongono (i triangoli del poligono sono in vTria) - ITTTS_VERT_VERT = 2, // intersezione coppia di vertici - ITTTS_VERT_EDGE = 3, // vertice del primo su lato del secondo - ITTTS_VERT_INT = 4, // vertice del primo nell'interno del secondo - ITTTS_EDGE_VERT = 5, // vertice del secondo su lato del primo - ITTTS_EDGE_EDGE_PNT = 6, // punto sull'intersezione di due lati - ITTTS_INT_VERT = 7, // vertice del secondo nell'interno del primo - ITTTS_EDGE_EDGE_SEG = 8, // sovrapposizione di lati - ITTTS_EDGE_INT = 9, // lato del primo nell'interno del secondo - ITTTS_INT_EDGE = 10, // lato del secondo nell'interno del primo - ITTTS_INT_INT_SEG = 11 // segmento all'interno di entrambi i triangoli - } ; -// Conversione dai nuovi ai vecchi tipi -inline int FromSpecialToNormal( int nRes) -{ - if ( nRes < ITTTS_NO || nRes > ITTTS_INT_INT_SEG) - return ITTT_NO ; - const int nFromSpecialToNormal[] = { ITTT_NO, ITTT_OVERLAPS, ITTT_VERT, ITTT_VERT, ITTT_VERT, ITTT_VERT, ITTT_PNT, ITTT_VERT, ITTT_EDGE, ITTT_EDGE, ITTT_EDGE, ITTT_YES } ; - return nFromSpecialToNormal[nRes] ; -} +// Tipo di intersezione triangolo-triangolo +enum IntTriaTriaSpecialType { ITTT_NO = 0, // non c'è intersezione + ITTT_OVERLAPS = 1, // i triangoli si sovrappongono (i triangoli del poligono sono in vTria) + ITTT_VERT_VERT = 2, // intersezione coppia di vertici + ITTT_VERT_EDGE = 3, // vertice del primo su lato del secondo + ITTT_VERT_INT = 4, // vertice del primo nell'interno del secondo + ITTT_EDGE_VERT = 5, // vertice del secondo su lato del primo + ITTT_EDGE_EDGE_PNT = 6, // punto sull'intersezione di due lati + ITTT_INT_VERT = 7, // vertice del secondo nell'interno del primo + ITTT_EDGE_EDGE_SEG = 8, // sovrapposizione di lati + ITTT_EDGE_INT = 9, // lato del primo nell'interno del secondo + ITTT_INT_EDGE = 10, // lato del secondo nell'interno del primo + ITTT_INT_INT_SEG = 11, // segmento all'interno di entrambi i triangoli + } ; + \ No newline at end of file