Moka kernel
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
plane.hh
Go to the documentation of this file.
1
/*
2
* lib-gmapkernel : Un noyau de 3-G-cartes et des opérations.
3
* Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4
* http://www.sic.sp2mi.univ-poitiers.fr/
5
* Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6
* guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7
*
8
* This file is part of lib-gmapkernel
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU Lesser General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU Lesser General Public License for more details.
19
*
20
* You should have received a copy of the GNU Lesser General Public License
21
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22
*/
23
24
//******************************************************************************
25
#ifndef PLANE_HH
26
#define PLANE_HH
27
//******************************************************************************
28
#include <cassert>
29
30
#include "
inline-macro.hh
"
31
#include "
vertex.hh
"
32
34
typedef
enum
{
XY_Proj
,
YZ_Proj
,
XZ_Proj
}
TProjection
;
35
//******************************************************************************
39
class
CPlane
40
{
41
public
:
42
44
46
53
CPlane
();
54
65
CPlane
(
TCoordinate
Aa,
TCoordinate
Ab,
TCoordinate
Ac,
TCoordinate
Ad);
66
76
CPlane
(
const
CVertex
& APoint1,
77
const
CVertex
& APoint2,
78
const
CVertex
& APoint3);
79
88
CPlane
(
const
CVertex
& ANormal,
const
CVertex
& APoint);
89
91
virtual
~CPlane
();
92
94
96
98
107
void
setPlane
(
TCoordinate
Aa,
TCoordinate
Ab,
TCoordinate
Ac,
TCoordinate
Ad);
108
116
void
setPlane
(
const
CVertex
& APoint1,
117
const
CVertex
& APoint2,
118
const
CVertex
& APoint3);
119
127
void
setPlane
(
const
CVertex
& ANormal,
const
CVertex
& APoint);
128
134
const
CVertex
&
getNormal
()
const
;
135
141
TCoordinate
getNormalNorm
()
const
;
142
148
TCoordinate
getA
()
const
;
149
155
TCoordinate
getB
()
const
;
156
162
TCoordinate
getC
()
const
;
163
169
TCoordinate
getD
()
const
;
170
175
void
reverseOrientation
();
176
183
bool
isPointOnPlane
(
const
CVertex
& APoint)
const
;
184
192
TCoordinate
pointDistance
(
const
CVertex
& APoint)
const
;
193
205
bool
getLineIntersection
(
const
CVertex
& APoint,
206
const
CVertex
& ADirection,
207
TCoordinate
* AInterParam)
const
;
208
219
bool
getLineIntersection
(
const
CVertex
& APoint,
220
const
CVertex
& ADirection,
221
CVertex
* AInter)
const
;
222
229
TProjection
getBestProjection
()
const
;
230
238
CVertex
projectPoint
(
const
CVertex
& APoint)
const
;
239
248
CVertex
projectPoint
(
const
CVertex
& APoint,
TProjection
AProj)
const
;
249
258
CVertex
unprojectPoint
(
const
CVertex
& APoint,
TProjection
AProj)
const
;
259
261
265
friend
std::ostream &
operator <<
(std::ostream & AStream,
const
CPlane
& APlane);
266
267
private
:
268
270
272
277
CVertex
FNormal;
278
280
TCoordinate
FNormalNorm;
281
283
TCoordinate
FD;
284
286
};
287
//******************************************************************************
288
#include INCLUDE_INLINE("plane.icc")
289
//******************************************************************************
290
#endif
291
//******************************************************************************
lib-gmapkernel
tools
geometry
plane.hh
Generated on Tue Apr 9 2013 09:51:36 for Moka kernel by
1.8.2