Files
igl/external/MeshFix/JMeshExt-1.0alpha_src/include/detectIntersections.h
T

69 lines
2.9 KiB
C++
Executable File

#ifndef DETECT_INTERSECTIONS_H
/****************************************************************************
* JMeshExt *
* *
* Consiglio Nazionale delle Ricerche *
* Istituto di Matematica Applicata e Tecnologie Informatiche *
* Sezione di Genova *
* IMATI-GE / CNR *
* *
* Authors: Marco Attene *
* *
* Copyright(C) 2006: IMATI-GE / CNR *
* *
* All rights reserved. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) *
* for more details. *
* *
****************************************************************************/
#define DETECT_INTERSECTIONS_H
#include "exttrimesh.h"
#define DI_STORED_PANORMAL(t) (((t)->info))
#define DI_STORED_PNORMAL(t) (((Point *)DI_STORED_PANORMAL(t)))
#define DI_STORED_NORMAL(t) (*DI_STORED_PNORMAL(t))
#define DI_MAX_NUMBER_OF_CELLS 10000
#define DI_TEINT_EPS 1.0e-15
#define DI_EPSILON_POINT Point(1.0e-9, 1.0e-9, 1.0e-9)
class di_cell
{
public:
Point mp, Mp;
List triangles;
di_cell() {}
di_cell(Triangulation *tin, bool useAll=1);
inline bool is_Point_in_cell(Point *p)
{return (p->x >= mp.x && p->x <= Mp.x && p->y >= mp.y && p->y <= Mp.y && p->z >= mp.z && p->z <= Mp.z);}
bool is_triangleBB_in_cell(Triangle *t);
di_cell *fork();
bool doesNotIntersectForSure();
void di_selectIntersections();
bool collinearPoints(Point *, Point *, Point *);
Point *edgeIntersectsTriangle(Edge *, Triangle *, Edge **);
Point *edgeEdgeIntersection(Edge *, Edge *);
};
#endif // DETECT_INTERSECTIONS_H