I am interested in ray-tracing polarized photons. I have code that works very well for unpolarized light. When a ray hits a dielectric interface the photon is either reflected or refracted by comparing the Fresnel coefficients with a random number.
The calculation of the reflected or refracted direction vector is relatively simple. Say we have a direction vector $\boldsymbol{v}$ and surface normal to the dielectric interface $\boldsymbol{n}$.
Reflected direction vector
$$ \boldsymbol{v} - 2d\boldsymbol{n} $$
Refracted direction vector
$$ N\boldsymbol{v} + (Nd - c) \boldsymbol{n} $$
In the above $d=\left(\boldsymbol{n}\cdot\boldsymbol{v}\right)$, $N=\frac{n_1}{n_2}$ which is the ratio of the refraction index at the interface, and $c =\left(1 - N^2\left(1 - d^2\right)\right)^{1/2}$. These transformation are easily applied within the ray tracing loop because call values are known.
Question
My question is what transformation needs to be applied to calculate the correct polarisation vector of a reflected or refracted ray? Before hitting the interface the polaristaion vector of the ray $\boldsymbol{k}$ is known (I assume linear polarised states only). Clearly $\boldsymbol{k}\cdot\boldsymbol{v}=0$, but where in the plane perpendicular to the direction vector $\boldsymbol{v}$ does the polaristaion vector $\boldsymbol{k}$ lie? Can I apply a simple transformation, similar to the above, to find the new polaristaion vector?