|
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();
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()
Destructor.
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
Operator to output a JonesMatrix to an output
stream.
Top of Page
Operator to input a JonesMatrix from an input
stream.
Top of Page
For More Information
SCATMECH Technical Information and Questions
Optical Technology Division (OTD) Home Page
OTD Technical Inquiries
OTD Website Comments
Current SCATMECH version: 6.00 (February 2008)
This page first online: Version 1.00 (March 2000)
This page last modified: Version 6.00 (February 2008)
|