Download Latest Version VOpR.001.jar (494.2 kB)
Email in envelope

Get an email when there's a new version of VOpR

Home
Name Modified Size InfoDownloads / Week
Source 2014-01-19
README.txt 2014-01-19 4.8 kB
VOpR.001.jar 2014-01-19 494.2 kB
Totals: 3 Items   499.0 kB 0
Some details:

The database:
-------------
The database model is somewhat old fashioned, but follows a philosophy:
Only primary data is stored in the database files. 
And in a human readable, editable format. 
Meta data is not stored in the database files.
Meta data is built directly into the code, into the application. 
The reason is, that useful external meta data becomes very powerful.
So powerful, that it belongs into its own virtual machine. 
But the application runs already in a virtual machine. 
And a virtual machine within a virtual machine is as bad as it sounds. 

The basic type of the database is a record. 
Basically this is just a map from key strings to value strings. 
The value strings can be interpreted in many ways: as integers,numbers,boolean values, 
colors, enumeration items or even references to other records.

But some records have a layout (a type): then values to certain keys have an assigned type,
a default value and some access bits.
Also these record layouts may:
 - enforce some constraints on the data, 
 - generate error messages or 
 - calculate derived data.

Records are contained in record containers, currently either lists or trees. 
Record trees require the record to have some ID-key. 
Some containers may enforce a common record layout.

The record containers are themselves contained in a so called multi-database. 
This multi-database also distributes records to the specialized containers. 
This allows to store cross-linked records of different types within one database file.

The database editor:
--------------------
Currently the optical database stores:
- special wave lengths of light (which may have an assigned description) 
- optical materials: mostly dispersion properties
- lenses: currently only spherical lenses are supported; 
  also the diameters of the spherical caps are assumed to be equal 
- eye parameters: projection parameters for different 'light sensors' including ordinary eyes
- optical systems: examples or works in progress
As mentioned above, the global (multi-)database is divided into specialized databases, 
each with its own type of records. But all records are stored within on (text) file.
Not all values of a record are editable or stored in file. 

The editor of optical systems:
------------------------------
Optical systems are considered as a list of basic optical elements: spaces, spherical lenses, 
circular apertures or flat blocks of some optical material. 
There is a global optical medium assumed, which is used for spaces and (the outside of) 
lenses. 
In the editor only those lenses and optical materials can be used, which were already 
defined in the database. Thus before use, lenses must be created either 
in the database editor or in the lens editor. Once the optical system is complete, some 
parameters will be calculated automatically. In particular a ray transfer matrix analysis 
is done, which calculates the optical error of the system.
If given a test eye, the angle of view and the effective aperture is calculated too. 

The virtual optical rail:
-------------------------
For further testing of optical systems, a ray tracing simulation calculates images.
This simulation is optimized for speed, not realism. 
The goal is to provide useful diagnose images, not realistic blur. 
Although the java virtual machine allows no direct access to powerful graphic cards 
or specialized processor instructions, the current ray tracing speed should be enough 
for most applications.

This is achieved by enforcing some serious restrictions: 
The ray tracing engine tries to handle all rays uniformly. 
It calculates intersections/refractions of rays with layers in space. 
A strict z-ordering of the layers of a scene is assumed. 
In particular backward reflections are not supported. Also the layers should not intersect 
each other. Some layers act as filters: rays are filtered out, once they hit some aperture 
surface or are reflected backwards; the ray tracing continues for the remaining rays.
 
The end result is a ray map: start points with a ray direction are mapped to either end 
points on surfaces or ray directions into the cosmos. This ray data is then used to generate
an image. Lighting or special shading of surfaces is not done. 
Afterwards this ray data can still be accessed via mouse over, at the image pixels.   
 
To test the imaging properties of an optical system, test images may be added to the 
scenario. These may or may not be centered or symmetric.  

Notice:
-------
The author does not claim expertise regarding physics or optics. Corrections are welcome.
In fact this program was created in order to learn more about optics.   






  

 

 

 




    
 



     
Source: README.txt, updated 2014-01-19