Jack's Page: Basic Physics and Optics

**Author: Jack Ord
email: jackord@kw.igs.net**

It's all physics, and all of the illustrations (except for eight screen images and
the sailing picture on the Entry Page) are produced by Java
Applets running in your web browser. If you see an Applet Viewer screen image but no
Applet "slide show" on the Entry Page then your browser does not run Java Applets.
Most computer browsers can, and a free download is available from
Java. **Java 8 will require you to find the Java
Control Panel, select the security tab, click on Edit Exception Site List, and add
http://kw.igs.net**. Most mobile device browsers cannot run Java Applets, and that
situation is unlikely to change.
A Screen Image Gallery has been added to give
people with web browsers that do not run Java a rough idea of what is in the *Basic
Physics* section.

*Basic Physics* deals with simple algorithms for numerical solution of
problems in physics, notably Richard Feynman's algorithm for Newton's Second
Law. The systems studied begin with a mass oscillating on a
spring, and end with a wavefunction oscillating in a harmonic potential well.
The final applet in *Basic Physics* brings the two together. By default
the Schrodinger Equation is solved directly and the probability density is plotted.
Options enable the time dependence to be generated from the superposition of a series
of stationary states, and the plot to show Yr and Yi, the variables in the Schrodinger
Equation. An Applet Viewer screen image is shown below the Java Applet.

*Basic Physics* is aimed at people who want to write their own
programs. Java source code is provided for all of the applets along with
Liberty BASIC and/or
BBC BASIC program listings.
PostScript code is included also for some that do not
require user interaction. (PostScript runs in the Ghostscript graphical
interface GSview).

*Optics* is divided into *Matrix Ray Optics, Matrix Wave Optics*,
and *Ellipsometry* (matrix wave optics applied to the reflection of
polarized light from film-covered surfaces).

There is also a brief section on transients that shows examples of how a computer can be used acquire and analyze data.

The level of the material and the form in which it is presented are both
rather uneven. The early *Basic Physics* material was aimed at students
in a freshman course. The more recent material, aimed at surfers scanning
the net for items of interest, is more varied in level and has less
decriptive detail. The level of the *Optics* material increases
progressively the farther one goes into it.

*Basic Physics introduces algorithms for "back-of-the-envelope"
calculations in physics. It takes its name partly from the BASIC language,
and originates from Richard Feynman's algorithm for
solving F = ma problems on 1960-vintage calculators. The
algorithms are simple, but accurate, and can be applied to a wide
variety of problems in physics.*

- The Euler and Feynman Algorithms: a Mass on a Spring.
- Feynman Table Source code in BBC BASIC and Java
- Feynman Plot Source code in BBC BASIC and Java
- Spring Example Source code in BBC BASIC and Java
- The Simple Pendulum.
- Oscillation and Circular Motion Source code in BBC BASIC and Java
- Two-Mass System: Normal Modes.
- Two Masses and Springs Source code in BBC BASIC and Java
- Time-Dependent Forces: the Driven Oscillator.
- Driven Oscillator Source code in BBC BASIC, Java, and Postscript
- Velocity-Dependent Forces I: Air Resistance in One Dimension.
- Ball Going Up and Back Down Source code in BBC BASIC and Java
- Velocity-Dependent Forces II: Sliding in a Bowl with Friction.
- Bowl with Friction Source code in BBC BASIC and Java
- Velocity-Dependent Forces III: Damping and Resonance.
- Damping Source code in BBC BASIC and Java
- Resonance Source code in BBC BASIC and Java
- Projectile Motion I: Air Resistance in Two Dimensions.
- Hit a Homerun Source code in Liberty BASIC and Java
- Golf in the Wind Source code in Liberty BASIC and Java
- Naval Warfare Source code in Liberty BASIC and Java
- Projectile Motion II: Electrons in a Cylindrical Field.
- Electron Trajectories Source code in BBC BASIC and Java
- Projectile Motion III: Central-Force Motion.
- Launch Projectile at North Pole Source code in BBC BASIC and Java
- Central-Force Orbits Source code in Java, BBC BASIC, and PostScript
- Two or Three Interacting Bodies Source code in Liberty BASIC and Java
- Rutherford Scattering Source code in BBC BASIC and Java
- The Three-Body Problem: the Trojan Asteroid Group.
- Effective Potential Plot Source code in Java, BBC BASIC, and PostScript
- Rigid-Body Interaction: Gravitating Rods.
- Rods in Two Dimensions Source code in BBC BASIC and Java

- Gravitational and Electrostatic Fields.
- Three Sphere Field Plots Source code in Java, BBC BASIC, and PostScript
- The Magnetic Field.
- Long Wires Field Plot Source code in Java and BBC BASIC
- Circular Loop Field Plot Source code in Java and BBC BASIC
- The Magnetic Dipole Source code in Java and BBC BASIC
- Divergence and Laplace's Equation.
- Three Cylinders Source code in Java and BBC BASIC
- Prism Capacitor Source code in Java and BBC BASIC

- Path Variation: Two Famous Problems.
- The Brachistochrone Source code in Liberty BASIC and Java
- The Hanging Chain Source code in Liberty BASIC and Java
- The Simplex Algorithm Source code in Liberty BASIC and Java
- The Area under a Curve I: the Trapezoid Algorithm.
- The Harmonic Oscillator Source code in Liberty BASIC and Java
- The Area under a Curve II: the Singularity at the Turning Point.
- The Bouncing Ball Source code in Liberty BASIC and Java
- The Pendulum Source code in Liberty BASIC and Java
- Probability in Classical Mechanics: the Bouncing Ball.
- Probability in quantum mechanics: the Feynman algorithm revisited.
- Stationary States Source code in Liberty BASIC and Java
- The Bouncing Ball Source code in Liberty BASIC and Java
- The Double Well Source code in Liberty BASIC and Java
- Conservation of Angular Momentum: Central-Force Motion.
- Apsidal Angles Source code in Liberty BASIC and Java
- The Schrodinger Equation in 3-D: the Hydrogen Atom.
- The Hydrogen Atom Source code in Liberty BASIC and Java

- The Lorentz Transformation
- Apparent Rotation of a Sphere Source code in BBC BASIC and Java

- Introduction: The Plucked String.
- Travelling Wave Superposition Source code in Java and BBC BASIC
- Newton's Law: The Classical Wave Equation.
- The 8-Segment String Source code in Java and BBC BASIC
- Fourier Series Source code in Java and BBC BASIC
- The n-Segment String Source code in Java and BBC BASIC
- Pulse Motion Source code in Java and BBC BASIC
- Pulse Striking an Interface Source code in Java and BBC BASIC
- Schrodinger's Equation: The Quantum Wave Equation.
- The Infinite Square Well: The Quantum String Source code in Java and BBC BASIC
- A Rounded Well: The 4th-Power Potential Source code in Java
- The Quantum Harmonic Oscillator Source code in Java and BBC BASIC
- The V-Shaped 1st-Power Well Source code in Java

*Ian was Professor of Physics and Chairman of the Department at the University of Waterloo at the time of his death in 1993.**Don is Professor of Physics and Astronomy (retired) at the University of Alabama, Tuscaloosa.*

- Table of Contents
- Appendix: A program to calculate the matrix of an optical system.
- Matopt Source code in Java and Liberty BASIC

*A matrix treatment of wave propagation that continues on from the
matrix treatment of geometrical optics and provides the groundwork
for the sections on ellipsometry.*

- The Wave Matrix
- Reflection from a Bare Surface
- Wave Striking a Dielectric Source code in Java and BBC BASIC
- Wave Striking an Absorbing Medium Source code in Java and BBC BASIC
- Reflection from a Film-Covered Surface
- Film on a Dielectric Source code in Java and BBC BASIC
- Film on an Absorbing Medium Source code in Java and BBC BASIC
- Reflection from Wells and Barriers
- Well and Barrier Transmission Source code in Java and BBC BASIC
- Reflection and Tunneling Source code in Java and BBC BASIC
- Probability Density Source code in Java and BBC BASIC

- Fresnel Diffraction
- Circular Aperture Source code in Java, BBC BASIC, and PostScript
- Fraunhofer Diffraction
- Circular Aperture Source code in Java, BBC BASIC, and PostScript
- Triangular and Rectangular Apertures Source code in Java, BBC BASIC, and PostScript
- Diffraction Grating Source code in Java, BBC BASIC, and PostScript
- X-Ray Diffraction
- Cubic Crystals Source code in Java, BBC BASIC, and PostScript
- Close Packing Source code in Java and BBC BASIC

*A brief self-contained introduction to the subject. A more detailed
discussion of the introductory material is given in the Matrix Ray Optics and Matrix
Wave Optics sections. A more general discussion of ellipsometry,
including the Jones Calculus description of polarized light, can be
found in *A Closer Look at Nulling Ellipsometry*
by Don De Smet. Detail on the operation of a typical null instrument can be
found in *Principles of Operation of the Exacta 2000*,
also by Don De Smet.*

- Introduction.
- Ray Tracing.
- Wave Propagation.
- Reflection at Normal Incidence.
- Reflection from a Bare Surface at Oblique Incidence.
- Reflection from a Film-Covered Surface at Oblique Incidence.
- The Optics of a Null Ellipsometer.
- Simulation Programs.
- Single Layer Source code in Java, Liberty BASIC, Fortran, HP48, and PostScript
- Three Layer Source code in Java and Liberty BASIC
- Simplex-Algorithm Analysis Programs.
- Isotropic Film Growth Source code in Java and Liberty BASIC
- Anisotropic Film Growth Source code in Java and Liberty BASIC
- Variable Angle of Incidence Source code in Java and Liberty BASIC
- Application to
*In-Situ*Studies of Electrochemical Processes. - Vanadium Oxidation Experiment Source code in Java and Liberty BASIC
- Vanadium Experiment Analysis Source code in Java and Liberty BASIC

*Programs for the analysis of exponential and logarithmic
transients. The 'capacitor tester' program is from an interfacing
exercise for graduate students (or demonstration for freshmen).
The logarithmic transient program is used in research on
high-field ionic conduction. Both programs use data acquired under
program control by interface hardware that sets the current
through and reads the potential across an external circuit.*

- Exponential Transients: a Capacitor Tester.
- Exponential Transient Program Source code in Java and Liberty BASIC
- Logarithmic Transients: High-Field Ionic Conduction.
- Vanadium Oxidation Experiment Source code in Java and Liberty BASIC
- Logarithmic Transient Program Source code in Java and BBC BASIC

- Driven Oscillator
- Gravitational and Electrostatic Fields
- Central-Force Motion
- Trojan Asteroids
- Fresnel Diffraction: Circular Aperture
- Fraunhofer Diffraction: Circular Aperture
- Fraunhofer Diffraction: Triangular and Rectangular Apertures
- Diffraction Grating
- X-ray Diffraction
- X-ray Diffraction (in black and white)
- Ellipsometry: Film Growth