File: detectIntersections.h

package info (click to toggle)
octave-iso2mesh 1.9.8%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 11,128 kB
  • sloc: cpp: 11,982; ansic: 10,158; sh: 365; makefile: 59
file content (73 lines) | stat: -rw-r--r-- 3,249 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#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(const di_cell &toCopy) { mp = toCopy.mp; Mp = toCopy.Mp; triangles.appendList(&toCopy.triangles); }
 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();
 bool containsBothShells(short markBitShell1 = 0, short markBitShell2 = 1);
 void initializeEdges();
 void di_selectIntersections();

 bool collinearPoints(Point *, Point *, Point *);
};
//
//// functions, that don't need the object
//Point *edgeIntersectsTriangle(Edge *, Triangle *, Edge **);
//Point *edgeEdgeIntersection(Edge *, Edge *);

#endif // DETECT_INTERSECTIONS_H