Salome HOME
Updated path
[tools/solverlab.git] / CDMATH / mesh / src / Point.cxx
1 /*
2  * point.cxx
3  *
4  *  Created on: 23 janv. 2012
5  *      Authors: CDMAT
6  */
7
8 #include "Point.hxx"
9 #include <cmath>
10
11 using namespace std;
12
13 //----------------------------------------------------------------------
14 Point::Point( void )
15 //----------------------------------------------------------------------
16 {
17         _x[0]=0.0;
18         _x[1]=0.0;
19         _x[2]=0.0;
20 }
21
22 //----------------------------------------------------------------------
23 Point::~Point( void )
24 //----------------------------------------------------------------------
25 {
26 }
27
28 //----------------------------------------------------------------------
29 Point::Point( const double x, const double y, const double z )
30 //----------------------------------------------------------------------
31 {
32         _x[0] = x ;
33         _x[1] = y ;
34         _x[2] = z ;
35 }
36
37 //----------------------------------------------------------------------
38 Point::Point( const Point& p )
39 //----------------------------------------------------------------------
40 {
41         _x[0] = p.x() ;
42         _x[1] = p.y() ;
43         _x[2] = p.z() ;
44 }
45
46 //----------------------------------------------------------------------
47 double&
48 Point::operator[] ( int i )
49 //----------------------------------------------------------------------
50 {
51         return _x[i] ;
52 }
53
54 //----------------------------------------------------------------------
55 double
56 Point::x () const
57 //----------------------------------------------------------------------
58 {
59         return _x[0] ;
60 }
61
62 //----------------------------------------------------------------------
63 double
64 Point::y () const
65 //----------------------------------------------------------------------
66 {
67         return _x[1] ;
68 }
69
70 //----------------------------------------------------------------------
71 double
72 Point::z () const
73 //----------------------------------------------------------------------
74 {
75         return _x[2] ;
76 }
77
78 //----------------------------------------------------------------------
79 Point
80 Point::operator+ ( const Point& p ) const
81 //----------------------------------------------------------------------
82 {
83         double xcoor= _x[0] + p.x() ;
84         double ycoor= _x[1] + p.y() ;
85         double zcoor= _x[2] + p.z() ;
86         Point p1(xcoor,ycoor,zcoor);
87         return p1;
88 }
89
90 //----------------------------------------------------------------------
91 Point
92 Point::operator- ( const Point& p ) const
93 //----------------------------------------------------------------------
94 {
95         double xcoor= _x[0] - p.x() ;
96         double ycoor= _x[1] - p.y() ;
97         double zcoor= _x[2] - p.z() ;
98         Point p1(xcoor,ycoor,zcoor);
99         return p1;
100 }
101
102 //----------------------------------------------------------------------
103 const Point&
104 Point::operator+= ( const Point& p )
105 //----------------------------------------------------------------------
106 {
107         _x[0] += p.x() ;
108         _x[1] += p.y() ;
109         _x[2] += p.z() ;
110         return *this;
111 }
112
113 //----------------------------------------------------------------------
114 const Point&
115 Point::operator-= ( const Point& p )
116 //----------------------------------------------------------------------
117 {
118         _x[0] -= p.x() ;
119         _x[1] -= p.y() ;
120         _x[2] -= p.z() ;
121         return *this;
122 }
123
124 //----------------------------------------------------------------------
125 Point
126 Point::operator* ( double s ) const
127 //----------------------------------------------------------------------
128 {
129         double xcoor= _x[0]*s ;
130         double ycoor= _x[1]*s ;
131         double zcoor= _x[2]*s ;
132         Point p1(xcoor,ycoor,zcoor);
133         return p1;
134 }
135
136 //----------------------------------------------------------------------
137 const Point&
138 Point::operator*= ( double s )
139 //----------------------------------------------------------------------
140 {
141         _x[0] *= s ;
142         _x[1] *= s ;
143         _x[2] *= s ;
144         return *this;
145 }
146
147 //----------------------------------------------------------------------
148 Point
149 Point::operator/ ( double s ) const
150 //----------------------------------------------------------------------
151 {
152         double xcoor= _x[0]/s ;
153         double ycoor= _x[1]/s ;
154         double zcoor= _x[2]/s ;
155         Point p1(xcoor,ycoor,zcoor);
156         return p1;
157 }
158
159 //----------------------------------------------------------------------
160 const Point&
161 Point::operator/= ( double s )
162 //----------------------------------------------------------------------
163 {
164         _x[0] /= s ;
165         _x[1] /= s ;
166         _x[2] /= s ;
167         return *this;
168 }
169
170 //----------------------------------------------------------------------
171 const Point&
172 Point::operator= ( const Point& p )
173 //----------------------------------------------------------------------
174 {
175         _x[0] = p.x() ;
176         _x[1] = p.y() ;
177         _x[2] = p.z() ;
178         return *this;
179 }
180
181 //----------------------------------------------------------------------
182 double
183 Point::distance( const Point& p ) const
184 //----------------------------------------------------------------------
185 {
186         double dx = p.x() - _x[0] ;
187         double dy = p.y() - _x[1] ;
188         double dz = p.z() - _x[2] ;
189
190         return sqrt(dx*dx + dy*dy + dz*dz) ;
191 }
192
193 //----------------------------------------------------------------------
194 double Point::norm() const
195 //----------------------------------------------------------------------
196 {
197         return sqrt(_x[0]*_x[0] + _x[1]*_x[1] + _x[2]*_x[2]) ;
198 }
199 //----------------------------------------------------------------------
200 double Point::dot( const Point& p ) const
201 //----------------------------------------------------------------------
202 {
203         return _x[0]*p.x() + _x[1]*p.y() + _x[2]*p.z() ;
204 }