LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | List of all members
lsst::afw::cameraGeom::Orientation Class Referencefinal

Describe a detector's orientation in the focal plane. More...

#include <Orientation.h>

Public Member Functions

 Orientation (lsst::geom::Point2D const fpPosition=lsst::geom::Point2D(0, 0), lsst::geom::Point2D const refPoint=lsst::geom::Point2D(-0.5, -0.5), lsst::geom::Angle const yaw=lsst::geom::Angle(0), lsst::geom::Angle const pitch=lsst::geom::Angle(0), lsst::geom::Angle const roll=lsst::geom::Angle(0))
 
 ~Orientation () noexcept
 
 Orientation (Orientation const &) noexcept
 
 Orientation (Orientation &&) noexcept
 
Orientationoperator= (Orientation const &) noexcept
 
Orientationoperator= (Orientation &&) noexcept
 
lsst::geom::Point2D getFpPosition () const noexcept
 Return focal plane position of detector reference point (mm) More...
 
lsst::geom::Point2D getReferencePoint () const noexcept
 Return detector reference point (pixels) More...
 
lsst::geom::Angle getYaw () const noexcept
 Return the yaw angle. More...
 
lsst::geom::Angle getPitch () const noexcept
 Return the pitch angle. More...
 
lsst::geom::Angle getRoll () const noexcept
 Return the roll angle. More...
 
int getNQuarter () const noexcept
 Return the number of quarter turns (rounded to the closest quarter) More...
 
std::shared_ptr< geom::TransformPoint2ToPoint2makePixelFpTransform (lsst::geom::Extent2D const pixelSizeMm) const
 Generate a Transform from pixel to focal plane coordinates. More...
 
std::shared_ptr< geom::TransformPoint2ToPoint2makeFpPixelTransform (lsst::geom::Extent2D const pixelSizeMm) const
 Generate a Transform from focal plane to pixel coordinates. More...
 

Detailed Description

Describe a detector's orientation in the focal plane.

All rotations are about the reference point on the detector. Rotations are intrinsic, meaning each rotation is applied in the coordinates system produced by the previous rotation. Rotations are applied in this order: yaw (Z), pitch (Y'), and roll (X'').

Warning
: default refPoint is -0.5, -0.5 (the lower left corner of a detector). This means that the default-constructed Orientation is not a unity transform, but instead includes a 1/2 pixel shift.

Definition at line 51 of file Orientation.h.

Constructor & Destructor Documentation

◆ Orientation() [1/3]

lsst::afw::cameraGeom::Orientation::Orientation ( lsst::geom::Point2D const  fpPosition = lsst::geom::Point2D(0, 0),
lsst::geom::Point2D const  refPoint = lsst::geom::Point2D(-0.5, -0.5),
lsst::geom::Angle const  yaw = lsst::geom::Angle(0),
lsst::geom::Angle const  pitch = lsst::geom::Angle(                                 0),
lsst::geom::Angle const  roll = lsst::geom::Angle(                                 0) 
)
explicit
Parameters
fpPositionFocal plane position of detector reference point (mm)
refPointReference point on detector (pixels). Offset is measured to this point and all all rotations are about this point. The default value (-0.5, -0.5) is the lower left corner of the detector.
yawyaw: rotation about Z (X to Y), 1st rotation
pitchpitch: rotation about Y' (Z'=Z to X'), 2nd rotation
rollroll: rotation about X'' (Y''=Y' to Z''), 3rd rotation

Definition at line 30 of file Orientation.cc.

33  : _fpPosition(fpPosition), _refPoint(refPoint), _yaw(yaw), _pitch(pitch), _roll(roll), _rotMat() {
34  double cosYaw = std::cos(_yaw);
35  double sinYaw = std::sin(_yaw);
36  double cosPitch = std::cos(_pitch);
37  double sinPitch = std::sin(_pitch);
38  double cosRoll = std::cos(_roll);
39  double sinRoll = std::sin(_roll);
40 
41  // This comes from the rotation matrix written down here:
42  // http://en.wikipedia.org/wiki/Euler_angles
43  // for Tait-Bryan angles Z_1Y_2X_3
44  // _rotMat = coeffA coeffB
45  // coeffD coeffE
46  _rotMat << cosYaw * cosPitch, cosYaw * sinPitch * sinRoll - cosRoll * sinYaw, cosPitch * sinYaw,
47  cosYaw * cosRoll + sinYaw * sinPitch * sinRoll;
48 }
table::Point2DKey refPoint
Definition: Detector.cc:168
table::Key< lsst::geom::Angle > yaw
Definition: Detector.cc:169
table::Key< lsst::geom::Angle > roll
Definition: Detector.cc:171
table::Point2DKey fpPosition
Definition: Detector.cc:167
table::Key< lsst::geom::Angle > pitch
Definition: Detector.cc:170
T cos(T... args)
T sin(T... args)

◆ ~Orientation()

lsst::afw::cameraGeom::Orientation::~Orientation ( )
defaultnoexcept

◆ Orientation() [2/3]

lsst::afw::cameraGeom::Orientation::Orientation ( Orientation const &  other)
noexcept

Definition at line 52 of file Orientation.cc.

53  : _fpPosition(other._fpPosition),
54  _refPoint(other._refPoint),
55  _yaw(other._yaw),
56  _pitch(other._pitch),
57  _roll(other._roll),
58  _rotMat(other._rotMat) {}

◆ Orientation() [3/3]

lsst::afw::cameraGeom::Orientation::Orientation ( Orientation &&  other)
noexcept

Definition at line 59 of file Orientation.cc.

60  : _fpPosition(std::move(other._fpPosition)),
61  _refPoint(std::move(other._refPoint)),
62  _yaw(std::move(other._yaw)),
63  _pitch(std::move(other._pitch)),
64  _roll(std::move(other._roll)),
65  _rotMat(std::move(other._rotMat)) {}
T move(T... args)

Member Function Documentation

◆ getFpPosition()

lsst::geom::Point2D lsst::afw::cameraGeom::Orientation::getFpPosition ( ) const
inlinenoexcept

Return focal plane position of detector reference point (mm)

Definition at line 74 of file Orientation.h.

74 { return _fpPosition; }

◆ getNQuarter()

int lsst::afw::cameraGeom::Orientation::getNQuarter ( ) const
noexcept

Return the number of quarter turns (rounded to the closest quarter)

Definition at line 85 of file Orientation.cc.

85  {
86  float yawDeg = _yaw.asDegrees();
87  while (yawDeg < 0.) {
88  yawDeg += 360.;
89  }
90  return std::floor((yawDeg + 45.) / 90.);
91 }
constexpr double asDegrees() const noexcept
Return an Angle's value in degrees.
Definition: Angle.h:169
T floor(T... args)

◆ getPitch()

lsst::geom::Angle lsst::afw::cameraGeom::Orientation::getPitch ( ) const
inlinenoexcept

Return the pitch angle.

Definition at line 83 of file Orientation.h.

83 { return _pitch; }

◆ getReferencePoint()

lsst::geom::Point2D lsst::afw::cameraGeom::Orientation::getReferencePoint ( ) const
inlinenoexcept

Return detector reference point (pixels)

Definition at line 77 of file Orientation.h.

77 { return _refPoint; }

◆ getRoll()

lsst::geom::Angle lsst::afw::cameraGeom::Orientation::getRoll ( ) const
inlinenoexcept

Return the roll angle.

Definition at line 86 of file Orientation.h.

86 { return _roll; }

◆ getYaw()

lsst::geom::Angle lsst::afw::cameraGeom::Orientation::getYaw ( ) const
inlinenoexcept

Return the yaw angle.

Definition at line 80 of file Orientation.h.

80 { return _yaw; }

◆ makeFpPixelTransform()

std::shared_ptr< afw::geom::TransformPoint2ToPoint2 > lsst::afw::cameraGeom::Orientation::makeFpPixelTransform ( lsst::geom::Extent2D const  pixelSizeMm) const

Generate a Transform from focal plane to pixel coordinates.

Returns
lsst::afw::geom::Transform from focal plane to pixel coordinates
Parameters
pixelSizeMmSize of the pixel in mm in X and Y

Definition at line 107 of file Orientation.cc.

108  {
109  return makePixelFpTransform(pixelSizeMm)->inverted();
110 }
std::shared_ptr< geom::TransformPoint2ToPoint2 > makePixelFpTransform(lsst::geom::Extent2D const pixelSizeMm) const
Generate a Transform from pixel to focal plane coordinates.
Definition: Orientation.cc:93

◆ makePixelFpTransform()

std::shared_ptr< afw::geom::TransformPoint2ToPoint2 > lsst::afw::cameraGeom::Orientation::makePixelFpTransform ( lsst::geom::Extent2D const  pixelSizeMm) const

Generate a Transform from pixel to focal plane coordinates.

Returns
lsst::afw::geom::Transform from pixel to focal plane coordinates
Parameters
pixelSizeMmSize of the pixel in mm in X and Y

Definition at line 93 of file Orientation.cc.

94  {
95  // jacobian = coeffA*pixelSizeMmX, coeffB*pixelSizeMmY,
96  // coeffD*pixelSizeMmX, coeffE*pixelSizeMmY
97  Eigen::Matrix2d jacobian =
98  _rotMat.array() * (Eigen::Vector2d::Ones() * pixelSizeMm.asEigen().transpose()).array();
99 
100  Eigen::Vector2d refMm = pixelSizeMm.asEigen().array() * _refPoint.asEigen().array();
101  Eigen::Vector2d translation = _fpPosition.asEigen() - (_rotMat * refMm);
102 
103  lsst::geom::AffineTransform affineTransform = lsst::geom::AffineTransform(jacobian, translation);
104  return afw::geom::makeTransform(affineTransform);
105 }
An affine coordinate transformation consisting of a linear transformation and an offset.
EigenVector const & asEigen() const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
Return a fixed-size Eigen representation of the coordinate object.
std::shared_ptr< TransformPoint2ToPoint2 > makeTransform(lsst::geom::AffineTransform const &affine)
Wrap an lsst::geom::AffineTransform as a Transform.

◆ operator=() [1/2]

Orientation & lsst::afw::cameraGeom::Orientation::operator= ( Orientation &&  other)
noexcept

Definition at line 75 of file Orientation.cc.

75  {
76  _fpPosition = std::move(other._fpPosition);
77  _refPoint = std::move(other._refPoint);
78  _yaw = std::move(other._yaw);
79  _pitch = std::move(other._pitch);
80  _roll = std::move(other._roll);
81  _rotMat = std::move(other._rotMat);
82  return *this;
83 }

◆ operator=() [2/2]

Orientation & lsst::afw::cameraGeom::Orientation::operator= ( Orientation const &  other)
noexcept

Definition at line 66 of file Orientation.cc.

66  {
67  _fpPosition = other._fpPosition;
68  _refPoint = other._refPoint;
69  _yaw = other._yaw;
70  _pitch = other._pitch;
71  _roll = other._roll;
72  _rotMat = other._rotMat;
73  return *this;
74 }

The documentation for this class was generated from the following files: