ay = 170: fg = 75
CLS
SCREEN 12
LOCATE 10, 1
PRINT " PROGRAM 'ELLIPOLA'"
PRINT
PRINT
PRINT "Plots the ellipse of polarization and the sense of rotation
taking as"
PRINT "input data the amplitudes in two orthogonal axes and the phase"
PRINT "difference between them."
PRINT "Formulae taken from Born-Wolf,'Principles of Optics',
Pergamon 1959,"
PRINT "pag 27, formulae 30 to 32."
PRINT "Verified coincidence with Rey Pastor-Santalo-Balanzat,"
PRINT "'Geometria Analitica', Kapelusz 1955, pag 143, formula 1 and
pag 156, formula 26"
PRINT "The default values are those of Fig.1.2"
PRINT "To finish put Ay = 0"
DO: LOOP WHILE INKEY$ = ""
pi = 4 * ATN(1)
ax = 200
dt = .01
verde = 10
rojo = 4
DO
CLS
PRINT "Amplitude in y (0<Ay<200)": PRINT
PRINT "Ay ="; ay; : INPUT a$: IF a$ <> "" THEN
ay = VAL(a$)
IF ay = 0 THEN END
PRINT : PRINT : PRINT
PRINT "Phase in degrees, fg": PRINT
PRINT "fg ="; fg; : INPUT a$: IF a$ <> "" THEN
fg = VAL(a$)
f = fg * pi / 180
alfa = ATN(ay / ax)
psi = .5 * ATN(TAN(2 * alfa)
* COS(f))
psig = (180 / pi) * psi
u = SIN(2 * alfa) *
SIN(f)
IF u = 1 THEN u = .99999
ji = .5 * ATN(u / SQR(1
- u ^ 2))
ea = SQR((ax ^ 2 + ay ^
2) / (1 + TAN(ji) ^ 2))
eb = ea * TAN(ji)
cp = COS(psi)
sp = SIN(psi)
CLS
PRINT "Amplitude Ax ="; ax, "Amplitude Ay ="; ay,
"Phase in degrees ="; fg
LOCATE 30, 1
PRINT "a Axis ="; ea, "b Axis ="; eb, "Angle
(a,x) ="; INT(psig * 1000) / 1000;
LINE (319 - ax, 239 - ay)-(320 + ax, 239 + ay), 15, B
LINE (319 - ea * cp, 239 + ea * sp)-(319 + ea * cp, 239 - ea * sp)
LINE (319 - eb * sp, 239 - eb * cp)-(319 + eb * sp, 239 + eb * cp)
LINE (319 - ax, 239)-(319 + ax, 239), 8
LINE (319, 239 - ay)-(319, 239 + ay), 8
DO WHILE INKEY$ = ""
FOR t = 0 TO 360 STEP dt
ex = ax * COS(pi * t /
180)
ey = ay * COS((pi / 180)
* (t + fg))
PSET (320 + ex, 239 -
ey), verde
NEXT t
SWAP verde, rojo
LOOP
LOOP