Moka libraries
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
ineq-table-2.hh
Go to the documentation of this file.
1
/*
2
* lib-spamod : Visualisation des objets en discret.
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-spamod
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
* Fichier : Ineq_Table2.h *
26
* Auteur : DEXET Martine *
27
*----------------------------------------------------------------------------*
28
* Ce fichier contient la spécification de la classe Ineq_Table2. Cette *
29
* classe permet de représenter un tableau d'inéquations, comportant deux *
30
* éléments. *
31
* *
32
*****************************************************************************/
33
34
35
#ifndef INEQ_TABLE2_H
36
#define INEQ_TABLE2_H
37
38
#include "
inequation.hh
"
39
40
41
42
/******************************************************************************
43
* Classe Ineq_Table2 *
44
*****************************************************************************/
45
46
class
Ineq_Table2
{
47
48
public
:
49
50
// Constructeurs.
51
Ineq_Table2
();
52
Ineq_Table2
(
Ineq_Table2
const
& other);
53
Ineq_Table2
(CVertex
const
& p1, CVertex
const
& p2, CVertex
const
& p3);
54
55
// Méthode permettant la lecture d'une des équation du tableau.
56
Inequation
*
Get_Ineq
(
int
num);
57
58
// Méthode permettant l'écriture d'une équation dans le tableau.
59
void
Set_Ineq
(
int
num,
Inequation
const
& i);
60
61
62
private
:
63
64
// Tableau comportant deux cases, et contenant des objets de la classe
65
// Inequation.
66
Inequation
tab[2];
67
};
68
69
/******************************************************************************
70
* Fichier : Ineq_Table2.inl *
71
* Auteur : DEXET Martine *
72
*----------------------------------------------------------------------------*
73
* Ce fichier contient l'implémentation des méthodes de la classe *
74
* Ineq_Table2. *
75
* *
76
*****************************************************************************/
77
78
79
#include "
vector3d.hh
"
80
81
82
83
// Constructeurs.
84
inline
85
Ineq_Table2::Ineq_Table2
()
86
{}
87
88
inline
89
Ineq_Table2::Ineq_Table2
(
Ineq_Table2
const
& other)
90
{
91
for
(
int
i=0 ; i<2 ; i++)
92
tab[i] = other.tab[i];
93
}
94
95
inline
96
Ineq_Table2::Ineq_Table2
(CVertex
const
& p1,
97
CVertex
const
& p2,
98
CVertex
const
& p3)
99
{
100
float
d;
101
Vector3D
normal;
102
103
Vector3D
v1(p2.getX()-p1.getX(),
104
p2.getY()-p1.getY(),
105
p2.getZ()-p1.getZ());
106
107
Vector3D
v2(p3.getX()-p1.getX(),
108
p3.getY()-p1.getY(),
109
p3.getZ()-p1.getZ());
110
111
normal = v1.
Vect_Product
(v2);
112
113
tab[0].
SetA
(normal.getX());
114
tab[0].
SetB
(normal.getY());
115
tab[0].
SetC
(normal.getZ());
116
tab[1].
SetA
(-tab[0].GetA());
117
tab[1].
SetB
(-tab[0].GetB());
118
tab[1].
SetC
(-tab[0].GetC());
119
120
d = -(tab[0].
GetA
()*p1.getX() +
121
tab[0].
GetB
()*p1.getY() +
122
tab[0].
GetC
()*p1.getZ());
123
124
tab[0].
SetW
((fabs(tab[0].GetA()) +
125
fabs(tab[0].GetB()) +
126
fabs(tab[0].GetC()))/2.0);
127
128
tab[1].
SetW
(tab[0].GetW() + d);
129
tab[0].
SetW
(tab[0].GetW() - d);
130
}
131
132
133
// Méthode permettant la lecture d'une des équation du tableau.
134
inline
135
Inequation
*
Ineq_Table2::Get_Ineq
(
int
num)
136
{
137
assert(num >= 0 && num <= 1);
138
return
&tab[num];
139
}
140
141
142
// Méthode permettant l'écriture d'une équation dans le tableau.
143
inline
144
void
Ineq_Table2::Set_Ineq
(
int
num,
Inequation
const
& i)
145
{
146
assert(num >= 0 && num <= 1);
147
tab[num] = i;
148
}
149
150
#endif
lib-spamod
main
basic
ineq-table-2.hh
Generated on Tue Apr 9 2013 09:51:42 for Moka libraries by
1.8.2