summaryrefslogtreecommitdiff
path: root/basis_transformation.m
blob: b62168a4312b86a278672e94bb1f70fe867fe5b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
1;

% matrix of circular to linear transformation
% [x, y, z]' = lin2circ * [r, l, z]'
function transformation_matrix = circ2lin()
	transformation_matrix = ...
		[ ...
			[  1/sqrt(2),  1/sqrt(2), 0]; ...
			[ 1i/sqrt(2),-1i/sqrt(2), 0]; ...
			[          0,          0, 1] ...
		];
endfunction


% matrix of linear to circular transformation
% [r, l, z]' = lin2circ * [x, y, z]'
function transformation_matrix = lin2circ()
	transformation_matrix = ...
		[ ...
			[  1/sqrt(2), -1i/sqrt(2), 0]; ...
			[  1/sqrt(2),  1i/sqrt(2), 0]; ...
			[          0,          0,  1] ...
		];
endfunction
% linear basis rotation
% x axis untouched
% z and y rotated by angle theta around 'x' axis
% [x_new, y_new, z_new]' = oldlin2newlin * [x_old, y_old, z_old]'
function oldlin2newlin_m = oldlin2newlin(theta)
	oldlin2newlin_m = [ ...
			[ 1,          0,           0]; ...
			[ 0, cos(theta), -sin(theta)]; ...
			[ 0, sin(theta),  cos(theta)]...
		];
endfunction

% rotate x polarized light by angle phi around
% light propagation axis (Z)
function [E_field_x, E_field_y] = rotXpolarization(phi, E_field_linear) 
	% important negative frequency behave as they rotate in opposite direction
	E_field_x=cos(phi)*E_field_linear;
	E_field_y=sin(phi)*E_field_linear;
endfunction					

% rotate lin polarized light by angle phi around
% light propagation axis (Z)
function [E_field_x, E_field_y] = rotLinPolarization(phi, E_field_x_old, E_field_y_old) 
	% important negative frequency behave as they rotate in opposite direction
	E_field_x=cos(phi)*E_field_x_old - sin(phi)*E_field_y_old;
	E_field_y=sin(phi)*E_field_x_old + cos(phi)*E_field_y_old;
endfunction					

% transform  x,y,z linearly polarized light in the lab/light system coordinate
% to left, right, linear along z atom system of coordinate
% atom magnetic field is along new axis Z wich is at angle theta with respect to
% light propagation direction
function E_field_pos_freq=xyz_lin2atomic_axis_polarization(theta, E_field_lab_pos_freq)
	coord_transf_m =  lin2circ() * oldlin2newlin(theta);
	E_field_pos_freq.right  = coord_transf_m(1,1)*E_field_lab_pos_freq.x + coord_transf_m(1,2)*E_field_lab_pos_freq.y + coord_transf_m(1,3)*E_field_lab_pos_freq.z;
	E_field_pos_freq.left   = coord_transf_m(2,1)*E_field_lab_pos_freq.x + coord_transf_m(2,2)*E_field_lab_pos_freq.y + coord_transf_m(2,3)*E_field_lab_pos_freq.z;
	E_field_pos_freq.linear = coord_transf_m(3,1)*E_field_lab_pos_freq.x + coord_transf_m(3,2)*E_field_lab_pos_freq.y + coord_transf_m(3,3)*E_field_lab_pos_freq.z;
endfunction
	

% vim: ts=2:sw=2:fdm=indent