Volendo invece far calcolare alla macchina l'angolo di rifrazione si deve inserire una funzione per calcolare l'arcoseno a partire dall'arcotangente:
function arcsin(x: real):real;
begin
if x = 1 then arcsin:=Pi/2;
if x = -1 then arcsin:=-Pi/2;
if (x<>1) and (x<>-1) then arcsin:=arctan(x/sqrt(1-x*x))
end;
Una volta studiata la trigonometria, sarà facile comprendere questa funzione.
Ovviamente la funzione restituisce un arco in radianti da convertire in gradi utilizzando la costante predefinita Pi cioè P greca.
Risulta molto istruttivo per gli studenti individuare le variabili di cui si ha bisogno e dichiararle distinguendo i casi in cui il raggio incidente si trovi nel mezzo meno o più rifrangente, calcolare l'angolo limite, controllare se l'angolo di incidenza è superiore all'angolo limite (solo riflessione) o se è inferiore (riflessione e rifrazione).
Ecco come è stato risolto il problema da un gruppo di studenti rifrazione
E questo è il relativo listato
Altri studenti hanno inserito una finestra per scrivere l'indice di rifrazione.
In effetti è possibile fare a meno della funzione arcoseno e della trigonometria enunciando la legge di Snell in questo modo: se si prendono raggio incidente e raggio rifratto di uguale lunghezza, le loro proiezioni parallele alla linea di separazione dei due mezzi stanno in un rapporto costante che è l'indice di rifrazione.
A partire da questo enunciato senza quindi far uso della trigonometria
è possibilerappresentare graficamente la rifrazione. Ecco un esempio
che utilizza il mouse per variare l'angolo di incidenza (listato).