Moka libraries
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
vector3d.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 : Vector3D.h *
26
* Auteur : DEXET Martine *
27
*----------------------------------------------------------------------------*
28
* Ce fichier contient la sp�cification de la classe Vector3D. Cette classe *
29
* permet de repr�senter un vecteur � l'aide de trois nombres � virgule *
30
* flottante correspondants aux trois composantes d'un vecteur. *
31
* *
32
*****************************************************************************/
33
34
35
#ifndef VECTOR3D_H
36
#define VECTOR3D_H
37
38
#include "vertex.hh"
39
40
41
42
/******************************************************************************
43
* Classe Vector3D *
44
*****************************************************************************/
45
46
class
Vector3D
:
public
CVertex {
47
48
public
:
49
50
// Constructeurs.
51
Vector3D
();
52
Vector3D
(
float
vx,
float
vy,
float
vz);
53
Vector3D
(
Vector3D
const
& v);
54
Vector3D
(CVertex
const
& p1, CVertex
const
& p2);
55
56
// M�thode calculant la longueur d'un vecteur.
57
float
Get_Length
();
58
59
// M�thode permettant la normalisation d'un vecteur.
60
void
Normalize
();
61
62
// M�thode calculant le produit scalaire de deux vecteurs.
63
float
Scal_Product
(
Vector3D
const
& v);
64
65
// M�thode calculant le produit vectoriel de deux vecteurs.
66
Vector3D
Vect_Product
(
Vector3D
const
& v);
67
};
68
69
/******************************************************************************
70
* Fichier : Vector3D.inl *
71
* Auteur : DEXET Martine *
72
*----------------------------------------------------------------------------*
73
* Ce fichier contient l'impl�mentation des m�thodes de la classe Vector3D *
74
* *
75
*****************************************************************************/
76
77
78
// Constructeurs.
79
inline
80
Vector3D::Vector3D
()
81
: CVertex(0.0, 0.0, 0.0)
82
{
83
}
84
85
86
inline
87
Vector3D::Vector3D
(
float
vx,
float
vy,
float
vz)
88
:CVertex(vx, vy, vz)
89
{
90
}
91
92
inline
93
Vector3D::Vector3D
(
Vector3D
const
& v)
94
:CVertex(v)
95
{
96
}
97
98
inline
99
Vector3D::Vector3D
(CVertex
const
& p1, CVertex
const
& p2)
100
:CVertex( p2.getX() - p1.getX(), p2.getY() - p1.getY(), p2.getZ() - p1.getZ())
101
{
102
}
103
104
105
// M�thode calculant la longueur d'un vecteur.
106
inline
107
float
Vector3D::Get_Length
()
108
{
109
return
norm();
110
}
111
112
113
// M�thode permettant la normalisation d'un vecteur.
114
inline
115
void
Vector3D::Normalize
()
116
{
117
float
n = norm();
118
if
(!isZero(n)) *
this
/n;
119
}
120
121
122
// M�thode calculant le produit scalaire de deux vecteurs.
123
inline
124
float
Vector3D::Scal_Product
(
Vector3D
const
& v)
125
{
126
Vector3D
v1 = *
this
;
127
Vector3D
v2 = v;
128
129
v1.
Normalize
();
130
v2.
Normalize
();
131
132
return
v1.dot(v2);
133
}
134
135
136
// M�thode calculant le produit vectoriel de deux vecteurs.
137
inline
138
Vector3D
Vector3D::Vect_Product
(
Vector3D
const
& v)
139
{
140
return
Vector3D
(getY()*v.getZ() - v.getY()*getZ(),
141
getZ()*v.getX() - v.getZ()*getX(),
142
getX()*v.getY() - v.getX()*getY());
143
}
144
145
#endif
lib-spamod
main
basic
vector3d.hh
Generated on Tue Apr 9 2013 09:51:42 for Moka libraries by
1.8.2