Jashcraf / Polarization-Raytrace

development repository for polarization raytracing based tools
1 stars 3 forks source link

Make Diattenuation Calculator for PRT matrices #4

Open Jashcraf opened 2 years ago

Jashcraf commented 2 years ago

This method uses the SVD to find the eigenvalues of the PRT matrix so you can do diattenuation calculations

Jashcraf commented 2 years ago

np.linalg.svd() on the PRT matrix produces a result I wasn't expecting for the full system - the eigenvalue corresponding to the k vector should be unit valued, but no 1's are returned. Gonna try computing for a single surface.

image
Jashcraf commented 2 years ago

Test for the primary mirror - singular values for whatever the first ray in the sequence is (probably pupil corner) so this would be a higher diattenuation value.

image

Again we aren't seeing a value of 1 anywhere. From PL&OS:

image

So the k-vector must be not equal to 1 as we propagate through the system? That shouldn't be correct. I think it might be the projection of the k-vector on the z axis, so a transformation needs to be done into the s-p-k basis in order to compute the diattenuation correctly.

Jashcraf commented 2 years ago

Proceeding ahead anyway we can test the Diattenuation calculation against the one from the fresnel coefficients to verify the results. This is again for the primary mirror of a Cassegrain-type telescope.

image

Hold right up I'm not sure that I believe either of these - the diattenuation should be rotationally symmetric for both of them.

Jashcraf commented 2 years ago

Enforced the k-vectors normalization and got results of a more similar magnitude but apparently rotated?

image
Jashcraf commented 2 years ago

something is up with the polarization ray trace oh no - this is for the parabola

image