Content
- Introduction
- Controls
- Coordinate System
- Law of Reflection
- Menus
- Patterns
- Settings
- Util
- Animation
1. Introduction
Circular shaped mirrors positioned in the cells of a lattice reflect a light
ray according to the reflection law of geometric optics. Random positions
of the light source produce chaotic reflection patterns but it is possible
to position the light source so that symmetric reflection patterns are
created.
These symmetric pattern can be created either by hand using the build in high precision
calculator or by a graphical user interface called Pattern Manager. The Pattern
Manager also supports the making of patterns which consist of a sequence
of predefined symbols (see 'Symbols of Light' menu). Symbol patterns can be used
to encrypt small text due to the very sensible dependency on the radius of
the circles (see help of the Pattern Manager).
A compilation of interesting patterns are available via the patterns menu.
Patterns that are named after an author contain a quotation.
The simple circle lattice model is very chaotic: Initial errors of the ray
height (precision is set through Settings menu) increase very quickly with
every further reflection calculation. For a radius of 50% and a random height
(chaotic reflections) the average error increment is roughly given by a loss of a
decimal place for every additional reflection point. This butterfly effect can
directly be observed by starting the rotation animation and comparing the angular
velocities of the subsequent reflections of the initial light ray. Therefore
arbitrary precision mathematics is needed to completely determine the reflection
patterns. As soon as the lowest allowed precision of 10^-8 is reached the
reflection calculation immediately stops. A formula for error propagation can
be found in the math exercises.
2. Controls
Cursor up and down moves the light source vertically while the left and right cursor keys do rotate the circles. The rotation angle and the light source position can also be changed by mouse dragging.
3. Coordinate System
(1,1)
-------------------------
| O | O | O | O | O | O |
-------------------------
| O | O | O | O | O | O |
-------------------------
| O | O | O | O | O | O |
-------------------------
| O | O | O | O | O | O |
-------------------------
| O | O | O | O | O | O |
-------------------------
| O | O | O | O | O | O |
-------------------------
(-1,-1)
The circles are positioned in the cells of an imaginary quadratic grid where
the lower left corner and the upper right corner have the coordinates as shown above.
4. Law of Reflection
x *
C \
\
\ *
\
\ *
* \
\ P * r1
* x . . . . . . . . . . . <
* * . \
. \ phi1
. phi2 \
. \
. \ n
r2 . \
The illustration shows a circular shaped mirror with center at C reflecting
a light ray r1 into a ray r2. On the normal line n lies the reflection point
P. The angles between the normal line and the rays r1,r2 are denoted by
phi1,phi2. Around a small vicinity of the point P the circle bound differs
not much from a straight line. By reducing the problem to the plane mirror
case we get:
phi1 = phi2
5. Description of the Menus
- 5.1 Patterns Menu
- All patterns are loaded at application startup from the directory
.frozenlight/lightpatterns. If a pattern is selected then an algorithm
computes the rotation of the circles and the position of the light source
according to the boundary conditions
given by the corresponding pattern definition file. The values are
computed in the precision of the model which can be changed by the
Settings->Precision menu. During the calculation a progress bar
indicates how many decimal places are already accurate.
- 5.2 Settings Menu
- Grid:
- Changes the size of the grid containing the circles.
- Radius:
- Changes the radius of the circles. The radius of the circles is then
x % of the half side length of a grid cell where x is the selected
value. For a user defined radius the menu might be left unchecked if
it corresponds to none of the predefined values. If the selection of
a pattern requires a change in grid size the radius value is always
transfered as a percent value to the new grid.
- Precision:
- Sets the maximum number of digits that any number used by this
applications model can have (leading zero digits are not counted). If
the precision is increased after a user defined radius has been
entered it is good to check whether additional digits have to be added.
Every reflection point calculation decreases the initial precision of
the starting ray further. If a reflection calculation can not be
finished because the calculation precision became lower than the
required output precision of 8 digits then no outgoing ray is painted.
In this case the precision needs to be increased.
Note: Periodic patterns can never be finished regardless of what the
precision setting is.
- Automatic Precision:
- If selected then no popups asking for a precision change appear when
a pattern is selected.
- Theme:
- Changes the colors of the application.
- Light Source:
- Changes the shape of the light source.
- Variables:
- Opens a window which displays all variables that are relevant for this
application. Select the "?" entry in the variable menu for more info.
- Size Sort Patterns:
- Sorts the patterns in the pattern menu according to size.
- Group Patterns:
- Here the minimum size of the pattern groups (available as submenus of the
pattern menu) can be set.
- 5.3 Util Menu
- Pattern Manager:
- Opens a GUI for creating or deleting symmetric and symbol patterns.
- Symbols of Light:
- Shows a border or table that determines how characters a mapped to simple
reflection patterns when symbol sequence patterns are created.
- Calculator:
- Opens a simple arbitrary precision calculator.
- Scanner:
- Opens and runs the scanner. Select the "?" entry in the scanner menu
for more info.
- Exercises:
- Opens a window that shows a list of exercises focusing on the
mathematical side of FroZenLight. This list can be easily customized
by editing the /config/info/Exercises.txt file.
- Logs:
- Opens a window that shows all logs of this application. The information
shown there allows to adjust the initial gradients for new patterns.
Immediately after a pattern has been calculated a table with the
calculated gradients and their differences (Delta) to the estimated
gradients (defined at: Util->Pattern Manager) are shown. At the end of
the table some information concerning the pattern calculation algorithm
is shown. Worth to mention are the following:
- Damp:
- A factor needed by the pattern calculation algorithm to damp
the changes of the gradients when they are updated in the
different steps. Without this factor there would be no
convergence in most cases.
- Margin:
- Defines how much the current calculating accuracy must
supersede the already reached accuracy.
- Spread:
- The difference between requested and delivered accuracy. Is
only relevant for large text patterns.
- Record:
- Writes a complete set of variables that define the current reflection
pattern to the log window (Print) or to a file (Save As...) or loads
them from a file into the application (Load...).
For text patterns that have the store calculation option enabled the
records are created automatically and are saved in the config/records/
directory.
- Show Defining Path
- Paints the sequence of cells as it given in the pattern definition
on top of the current visible pattern. This function does nothing
if no pattern has been selected before.
- Museum:
- Shows a nice view especially made for touchscreen monitors: Big flat buttons for
for a selection of patterns and a few control buttons. Press ESC or
ctrl-x to leave.
The numbers on the buttons show the circle grid size (1 line), the
length of the cell sequence from the pattern definition (see Pattern Manager),
the boundary conditions (p = point, g = gradient) and the maximum
radius in percent for which the pattern can be computed.
A point boundary condition means that the first or last point lies exactly on a
symmetry axis of the lattice. A gradient boundary condition means the
gradient of the ray that enters the first point of the defining
cell sequence or leaves the last is one of -1,0,1.
- 5.4 Animation Menu
- x*pi/min:
- Starts an animation which rotates the circles at the selected speed.
Using the lowest precision makes the animation as smooth as possible.
- Patterns:
- Displays one pattern after another starting with a 2x2 lattice. Symbol
patterns and patterns which require are greater numerical accuracy
than it is possible by the selected precision are left away. A pattern
is also excluded from the animation if the maximum radius is lower than
the selected radius. The Log window (Menu: Util->Logs) shows a message
for every excluded pattern.
It is possible to change the settings (radius,precision,...) during a running
animation.
Note: If the animation is run in high precision (e.g. after the pi pattern has
been selected) then all speed levels are running slowly.