CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
Main Page
Namespaces
Classes
Files
File List
File Members
Geometry
Geometry
Geometry/Point3D.h
Go to the documentation of this file.
1
// -*- C++ -*-
2
// $Id: Point3D.h,v 1.5 2010/06/16 16:21:27 garren Exp $
3
// ---------------------------------------------------------------------------
4
//
5
// This file is a part of the CLHEP - a Class Library for High Energy Physics.
6
//
7
// History:
8
// 09.09.96 E.Chernyaev - initial version
9
// 12.06.01 E.Chernyaev - CLHEP-1.7: introduction of BasicVector3D to decouple
10
// the functionality from CLHEP::Hep3Vector
11
// 01.04.03 E.Chernyaev - CLHEP-1.9: template version
12
//
13
14
#ifndef HEP_POINT3D_H
15
#define HEP_POINT3D_H
16
17
#include <iosfwd>
18
#include "
CLHEP/Geometry/defs.h
"
19
#include "CLHEP/Vector/ThreeVector.h"
20
#include "
CLHEP/Geometry/BasicVector3D.h
"
21
22
namespace
HepGeom {
23
24
class
Transform3D;
25
34
template
<
class
T>
35
class
Point3D :
public
BasicVector3D<T> {};
36
43
template
<>
44
class
Point3D<float> :
public
BasicVector3D<float> {
45
public
:
48
Point3D
() {}
49
52
Point3D
(
float
x1,
float
y1,
float
z1) :
BasicVector3D
<float>(x1,y1,z1) {}
53
56
explicit
Point3D
(
const
float
*
a
)
57
:
BasicVector3D
<float>(a[0],a[1],a[2]) {}
58
61
Point3D
(
const
Point3D<float>
& v) :
BasicVector3D
<float>(v) {}
62
65
Point3D
(
const
BasicVector3D<float>
& v) :
BasicVector3D
<float>(v) {}
66
69
~Point3D
() {}
70
73
Point3D<float>
&
operator=
(
const
Point3D<float>
& v) {
74
set
(v.
x
(),v.
y
(),v.
z
());
return
*
this
;
75
}
76
79
Point3D<float>
&
operator=
(
const
BasicVector3D<float>
& v) {
80
set
(v.
x
(),v.
y
(),v.
z
());
return
*
this
;
81
}
82
85
float
distance2
()
const
{
return
mag2
(); }
86
89
float
distance2
(
const
Point3D<float>
& p)
const
{
90
float
dx = p.
x
()-
x
(), dy = p.
y
()-
y
(), dz = p.
z
()-
z
();
91
return
dx*dx + dy*dy + dz*dz;
92
}
93
96
float
distance
()
const
{
return
std::sqrt(distance2()); }
97
100
float
distance
(
const
Point3D<float>
& p)
const
{
101
return
std::sqrt(distance2(p));
102
}
103
106
Point3D<float>
& transform(
const
Transform3D
& m);
107
};
108
113
Point3D<float>
114
operator*
(
const
Transform3D & m,
const
Point3D<float> & p);
115
122
template
<>
123
class
Point3D<
double
> :
public
BasicVector3D<double> {
124
public
:
127
Point3D
() {}
128
131
Point3D
(
double
x1,
double
y1,
double
z1) :
BasicVector3D
<
double
>(x1,y1,z1) {}
132
135
explicit
Point3D
(
const
float
*
a
)
136
:
BasicVector3D
<
double
>(a[0],a[1],a[2]) {}
137
140
explicit
Point3D
(
const
double
*
a
)
141
:
BasicVector3D
<
double
>(a[0],a[1],a[2]) {}
142
145
Point3D
(
const
Point3D<double>
& v) :
BasicVector3D
<
double
>(v) {}
146
149
Point3D
(
const
BasicVector3D<float>
& v) :
BasicVector3D
<
double
>(v) {}
150
153
Point3D
(
const
BasicVector3D<double>
& v) :
BasicVector3D
<
double
>(v) {}
154
157
~Point3D
() {}
158
164
Point3D
(
const
CLHEP::Hep3Vector
& v)
165
:
BasicVector3D
<
double
>(v.
x
(),v.
y
(),v.
z
()) {}
166
172
operator
CLHEP::Hep3Vector
()
const
{
return
CLHEP::Hep3Vector
(
x
(),
y
(),
z
()); }
173
176
Point3D<double>
&
operator=
(
const
Point3D<double>
& v) {
177
set
(v.
x
(),v.
y
(),v.
z
());
return
*
this
;
178
}
179
182
Point3D<double>
&
operator=
(
const
BasicVector3D<float>
& v) {
183
set
(v.
x
(),v.
y
(),v.
z
());
return
*
this
;
184
}
185
188
Point3D<double>
&
operator=
(
const
BasicVector3D<double>
& v) {
189
set
(v.
x
(),v.
y
(),v.
z
());
return
*
this
;
190
}
191
194
double
distance2
()
const
{
return
mag2
(); }
195
198
double
distance2
(
const
Point3D<double>
& p)
const
{
199
double
dx = p.
x
()-
x
(), dy = p.
y
()-
y
(), dz = p.
z
()-
z
();
200
return
dx*dx + dy*dy + dz*dz;
201
}
202
205
double
distance
()
const
{
return
std::sqrt(distance2()); }
206
209
double
distance
(
const
Point3D<double>
& p)
const
{
210
return
std::sqrt(distance2(p));
211
}
212
215
Point3D<double>
& transform(
const
Transform3D
& m);
216
};
217
222
Point3D<double>
223
operator*
(
const
Transform3D & m,
const
Point3D<double> & p);
224
225
}
/* namespace HepGeom */
226
227
228
#ifdef ENABLE_BACKWARDS_COMPATIBILITY
229
// backwards compatibility will be enabled ONLY in CLHEP 1.9
230
#include "CLHEP/config/CLHEP.h"
231
#include "
CLHEP/Geometry/Normal3D.h
"
232
#include "
CLHEP/Geometry/Transform3D.h
"
233
typedef
HepGeom::Point3D<double>
HepPoint3D
;
234
#endif
235
236
#endif
/* HEP_POINT3D_H */
Generated on Sun Jun 17 2012 08:08:27 for CLHEP by
1.8.1.1