Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.apo.nmsu.edu/Telescopes/coordConv/html/src_2math_utils_8cc_source.html
Дата изменения: Thu May 7 21:42:46 2015
Дата индексирования: Sun Apr 10 04:42:27 2016
Кодировка:

Поисковые слова: arp 220
lsst.coordConv: src/mathUtils.cc Source File
lsst.coordConv  unknown
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
mathUtils.cc
Go to the documentation of this file.
1 #include <algorithm>
2 #include <cmath>
3 #include <limits>
4 #include "coordConv/mathUtils.h"
5 
6 namespace coordConv {
7 
8  double hypot(double x, double y) {
9  // assume that Eigen does it as well as anybody
10  Eigen::Vector2d vec(x, y);
11  return vec.norm();
12  }
13 
14  bool polarFromXY(double &r, double &theta, double x, double y) {
15  r = hypot(x, y);
16 
17  bool atOrig;
18  if (r < std::numeric_limits<double>::epsilon()) {
19  atOrig = true;
20  theta = 0.0;
21  } else {
22  atOrig = false;
23  theta = atan2d(y, x);
24  }
25  return atOrig;
26  }
27 
28  void xyFromPolar(double &x, double &y, double r, double theta) {
29  x = r * cosd(theta);
30  y = r * sind(theta);
31  }
32 
33  void computeRotationMatrix(Eigen::Matrix3d &rotMat, Eigen::Vector3d const &axis, double rotAngle) {
34  // this code is a minor adaptation of LSST afw Coord::rotate
35  double const c = cosd(rotAngle);
36  double const mc = 1.0 - c;
37  double const s = sind(rotAngle);
38 
39  double axisMag = axis.norm();
40  double const ux = axis(0) / axisMag;
41  double const uy = axis(1) / axisMag;
42  double const uz = axis(2) / axisMag;
43 
44  rotMat <<
45  (ux*ux + (1.0 - ux*ux)*c), (ux*uy*mc - uz*s), (ux*uz*mc + uy*s),
46  (ux*uy*mc + uz*s), (uy*uy + (1.0 - uy*uy)*c), (uy*uz*mc - ux*s),
47  (uz*ux*mc - uy*s), (uy*uz*mc + ux*s), (uz*uz + (1.0 - uz*uz)*c);
48  }
49 
50 }
void xyFromPolar(double &x, double &y, double r, double theta)
Definition: mathUtils.cc:28
double hypot(double x, double y)
Definition: mathUtils.cc:8
double cosd(double ang)
cosine of angle in degrees
Definition: mathUtils.h:55
bool polarFromXY(double &r, double &theta, double x, double y)
Definition: mathUtils.cc:14
double sind(double ang)
sine of angle in degrees
Definition: mathUtils.h:52
double atan2d(double x, double y)
arctangent2 in degrees
Definition: mathUtils.h:70
void computeRotationMatrix(Eigen::Matrix3d &rotMat, Eigen::Vector3d const &axis, double rotAngle)
Definition: mathUtils.cc:33