Content

  1. Introduction
  2. Controls
  3. Coordinate System
  4. Law of Reflection
  5. Menus
    1. Patterns
    2. Settings
    3. Util
    4. 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.