Isis 3 Programmer Reference
Affine.h
1#ifndef Affine_h
2#define Affine_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <vector>
11#include "tnt/tnt_array2d.h"
12
13namespace Isis {
65 class Affine {
66 public:
67 typedef TNT::Array2D<double> AMatrix;
68 Affine();
69 Affine(const AMatrix &a);
70 ~Affine();
71 void Solve(const double x[], const double y[],
72 const double xp[], const double yp[], int n);
73 static AMatrix getIdentity();
74 void Identity();
75 void Translate(double tx, double ty);
76 void Rotate(double rot);
77 void Scale(double scaleFactor);
78
79 void Compute(double x, double y);
80
86 double xp() const {
87 return p_xp;
88 };
89
95 double yp() const {
96 return p_yp;
97 };
98
99 void ComputeInverse(double xp, double yp);
100
106 double x() const {
107 return p_x;
108 };
109
115 double y() const {
116 return p_y;
117 };
118
119 std::vector<double> Coefficients(int var);
120 std::vector<double> InverseCoefficients(int var);
121
127 AMatrix Forward() const {
128 return (p_matrix.copy());
129 }
130
136 AMatrix Inverse() const {
137 return (p_invmat.copy());
138 }
139
140 private:
143
144 double p_x;
145 double p_y;
146 double p_xp;
147 double p_yp;
148
149 void checkDims(const AMatrix &am) const;
150 AMatrix invert(const AMatrix &a) const;
151 };
152};
153
154#endif
155
Affine basis function.
Definition Affine.h:65
AMatrix Forward() const
Returns the forward Affine matrix.
Definition Affine.h:127
std::vector< double > Coefficients(int var)
Return the affine coeffients for the entered variable (1 or 2).
Definition Affine.cpp:220
void ComputeInverse(double xp, double yp)
Compute (x,y) given (xp,yp).
Definition Affine.cpp:205
double xp() const
Returns the computed x'.
Definition Affine.h:86
double p_xp
x' value of the (x',y') coordinate
Definition Affine.h:146
AMatrix Inverse() const
Returns the inverse Affine matrix.
Definition Affine.h:136
double y() const
Returns the computed y.
Definition Affine.h:115
AMatrix p_matrix
Affine forward matrix.
Definition Affine.h:141
AMatrix p_invmat
Affine inverse matrix.
Definition Affine.h:142
void Translate(double tx, double ty)
Apply a translation to the current affine transform.
Definition Affine.cpp:134
static AMatrix getIdentity()
Return an Affine identity matrix.
Definition Affine.cpp:61
double yp() const
Returns the computed y'.
Definition Affine.h:95
double p_yp
y' value of the (x',y') coordinate
Definition Affine.h:147
TNT::Array2D< double > AMatrix
Affine Matrix.
Definition Affine.h:67
void Scale(double scaleFactor)
Apply a scale to the current affine transform.
Definition Affine.cpp:174
AMatrix invert(const AMatrix &a) const
Compute the inverse of a matrix.
Definition Affine.cpp:271
double p_y
y value of the (x,y) coordinate
Definition Affine.h:145
void Compute(double x, double y)
Compute (xp,yp) given (x,y).
Definition Affine.cpp:191
~Affine()
Destroys the Affine object.
Definition Affine.cpp:54
double p_x
x value of the (x,y) coordinate
Definition Affine.h:144
Affine()
Constructs an Affine transform.
Definition Affine.cpp:30
void Identity()
Set the forward and inverse affine transform to the identity.
Definition Affine.cpp:73
void Solve(const double x[], const double y[], const double xp[], const double yp[], int n)
Given a set of coordinate pairs (n >= 3), compute the affine transform that best fits the points.
Definition Affine.cpp:92
void checkDims(const AMatrix &am) const
Checks affine matrix to ensure it is a 3x3 standard form transform.
Definition Affine.cpp:251
std::vector< double > InverseCoefficients(int var)
Return the inverse affine coeffients for the entered variable (1 or 2).
Definition Affine.cpp:237
void Rotate(double rot)
Apply a translation to the current affine transform.
Definition Affine.cpp:151
double x() const
Returns the computed x.
Definition Affine.h:106
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16