SCATMECH > Classes and Functions >
Polarization >
JonesMatrix
class JonesMatrix
The class JonesMatrix represents a Jones matrix in a
Jones representation of polarization states. Arithmetic
operations between Jones matrices and Jones vectors,
various properties of a Jones matrix, and transformation
operations are defined.
Include file:
#include "mueller.h"
Source code:
jmatrix.cpp
See also:
SCATMECH Home,
Conventions, MuellerMatrix, JonesVector, StokesVector
C.F. Bohren and D.R. Huffman, Absorption and Scattering of Light by Small Particles, (Wiley, New York, 1983).
H.C. van de Hulst, Light Scattering by Small Particles, (Dover, New York, 1981).
R.A. Chipman, "Polarimetry." in Handbook of Optics, (McGraw-Hill, New York, 1995).
Definition of public
elements:
class JonesMatrix {
public:
JonesMatrix();
JonesMatrix(const JonesMatrix& x);
JonesMatrix(const COMPLEX& pp,const COMPLEX& ss,const COMPLEX& ps,const COMPLEX& sp);
explicit JonesMatrix(const MuellerMatrix& x);
JonesMatrix& operator=(const JonesMatrix& x);
JonesMatrix operator*(const JonesMatrix& matrix) const;
JonesMatrix operator*(const COMPLEX& x) const;
friend JonesMatrix operator*(const COMPLEX& x,const JonesMatrix& y);
JonesMatrix operator/(const COMPLEX& x) const;
JonesMatrix& operator*=(const JonesMatrix& a);
JonesMatrix& operator*=(const COMPLEX& a);
JonesMatrix& operator/=(const COMPLEX& a);
JonesVector operator*(const JonesVector& a) const;
JonesMatrix operator+(const JonesMatrix& a) const;
JonesMatrix operator-(const JonesMatrix& a) const;
JonesMatrix operator+=(const JonesMatrix& a);
JonesMatrix operator-=(const JonesMatrix& a);
JonesMatrix operator-() const;
COMPLEX& operator[](int i);
const COMPLEX& operator[](int i) const;
JonesMatrix rotate(double angle) const;
JonesMatrix transpose() const;
COMPLEX& PP();
COMPLEX PP() const ;
COMPLEX& SS();
COMPLEX SS() const ;
COMPLEX& PS();
COMPLEX PS() const ;
COMPLEX& SP();
COMPLEX SP() const ;
};
ostream& operator<<(ostream& os,const JonesMatrix& j);
istream& operator>>(istream& is, JonesMatrix& j);
JonesMatrix()
Null constructor.
Top of Page
JonesMatrix(const JonesMatrix& x)
Copy constructor.
Top of Page
JonesMatrix(const COMPLEX& pp,const COMPLEX& ss,const COMPLEX& ps,const COMPLEX& sp)
Explicit constructor with COMPLEX elements. Note
that the order of the parameters is important. ps
is the p to s matrix element, while sp is the s to
p matrix element.
Example:
JonesMatrix a(COMPLEX(1,0),COMPLEX(1,0),0.,0.);
Top of Page
explicit JonesMatrix(const MuellerMatrix& x)
Explicit constructor that converts a MuellerMatrix to a
JonesMatrix. This conversion is "improper" since a
MuellerMatrix does not
maintain phase information and allows for depolarization.
The result is the JonesMatrix that corresponds to
the part of the MuellerMatrix that is
polarization preserving.
Example:
MuellerMatrix m;
JonesMatrix j(m);
Top of Page
JonesMatrix& operator=(const JonesMatrix& x)
The assignment operator.
Example:
JonesMatrix j1,j2;
j1=j2;
Top of Page
JonesMatrix operator*(const JonesMatrix& matrix) const
Multiplication of one JonesMatrix by another.
Example:
JonesMatrix j1,j2,j3;
j3=j1*j2;
Top of Page
Multiplication and division of a JonesMatrix by a
scalar.
Example:
COMPLEX scalar;
JonesMatrix matrix;
matrix = matrix * scalar;
matrix = scalar * matrix;
matrix *= scalar;
matrix = matrix / scalar;
matrix = scalar / matrix; // Not allowed.
matrix /= scalar;
Top of Page
JonesVector operator*(const JonesVector& a) const
Left multiplication of a JonesVector by a
JonesMatrix.
Example:
JonesMatrix matrix;
JonesVector vector;
vector = matrix*vector;
Top of Page
Addition and subtraction of two JonesMatrix
objects.
Example:
JonesMatrix matrix1,matrix2,matrix3;
matrix3=matrix1+matrix2;
matrix3=matrix1-matrix2;
matrix1+=matrix2;
matrix1-=matrix2;
Top of Page
JonesMatrix operator-() const
Negation of a JonesMatrix.
Example:
JonesMatrix matrix;
matrix= -matrix;
Top of Page
COMPLEX& operator[](int i)
const COMPLEX& operator[](int i) const
Element referencing operator. The elements are defined in
the example.
Example:
JonesMatrix a;
COMPLEX pp,ss,ps,sp;
a[0]=pp;
a[1]=ss;
a[2]=ps;
a[3]=sp;
Top of Page
JonesMatrix rotate(const double angle) const
Function that returns a JonesMatrix rotated by
angle clockwise about the direction of
propagation.
Example:
JonesMatrix a,b;
a = b.rotate(45.*PI/180.);
Top of Page
JonesMatrix transpose() const
Function that returns the transpose of a
JonesMatrix.
Example:
JonesMatrix a,b;
a = b.transpose();
Top of Page
COMPLEX& PP()
const COMPLEX& PP() const
COMPLEX& SS()
const COMPLEX& SS() const
COMPLEX& PS()
const COMPLEX& PS() const
COMPLEX& SP()
const COMPLEX& SP() const
Element referencing by name. PS() corresponds to the p-in/s-out configuration, and SP() corresponds to the s-in/p-out configuration.
Example:
JonesMatrix a;
a.PP() = COMPLEX(1.,0.);
cout << a.SS() << " " << a.PS() << endl
<< a.SP() << " " << a.PP() << endl;
Top of Page
ostream& operator<<(ostream& os,const JonesMatrix& j)
Operator to output a JonesMatrix to an output
stream. The result is four complex numbers, separated by commas, and surrounded by parentheses, e.g., ((1,2),(3,4),(5,6),(7,8)).
The order of the values is: P to P, S to S, P to S, S to P.
Example:
JonesMatrix J;
cout << "J = " << J << endl;
Top of Page
istream& operator>>(istream& is, JonesMatrix& j)
Operator to input a JonesMatrix from an input
stream. The stream should contain four complex numbers, separated by commas, and surrounded by parentheses, e.g., ((1,2),(3,4),(5,6),(7,8)).
The order of the values is: P to P, S to S, P to S, S to P.
Example:
JonesMatrix J;
cin >> J;
Top of Page
For More Information
SCATMECH Technical Information and Questions
Sensor Science Division Home Page
Sensor Science Division Inquiries
Website Comments
Current SCATMECH version: 7.22 (April 2021)
|