Software for geometrical optics Is there any good software for construction optical path's in geometrical optics. More specifically I want features like:


*

*draw $k \in \mathbb{N}$ objects $K_1,\dots,K_n$ with indices of refraction $n_1,\dots,n_k$ and light sources $l \in \mathbb{N}$ light sources $L_1,\dots,L_l$


*

*define some light sources (or just light rays) and the program constructs the optical path of those rays through $K_1,\dots,K_n$. 

*define a point and the program constructs the optical path between the light sources and the given point


*draw some specific optical elements like lenses, (concave, convex) mirrors and do things like above

*construct automatically virtual images

*3D drawings would be fine


I would prefer free software for linux.
 A: I am not aware of a simple program to do what you ask. What comes to mind are either raytracers or finite element methods (FEM).
For a list of raytracing software: http://en.wikipedia.org/wiki/List_of_ray_tracing_software
I am not aware of any free FEM software but for an overview of the principle go here: http://en.wikipedia.org/wiki/Finite_element
Edit: I didn't read carefully. You wanted geometrical optics. I was thinking of ray/wave optics.
A: Gradually, after one got familiar and professional in optics, free softwares are not that useful. 
Besides Zemax, CODE V and OSLO are three industrial and very powerful geometrical-optics design softwares.  
A: The industrial tool is zemax; however, it is very expensive.
If you just want to make diagrams, the TeX package pst-optics might do the trick.
In the gaussian beam regime, optocad (free) is a tool often used in the laser interferometer gravitational wave detector community. 
A: I just discovered: 
opticalraytracer
From the manual: 

OpticalRayTracer is a free (GPL) cross-platform application that
  analyzes systems of lenses and mirrors. It uses optical principles and
  a virtual optical bench to predict the behavior of many kinds of
  ordinary and exotic lens types as well as flat and curved mirrors.
  OpticalRayTracer includes an advanced, easy-to-use interface that
  allows the user to rearrange the optical configuration by dragging
  objects around using the mouse.
OpticalRayTracer fully analyzes lens optical properties, incuding
  refraction and dispersion. The dispersion display uses color-coded
  light beams to simplify interpretation of the results.
Recent OpticalRayTracer versions allow the creation of mirrors, flat
  and curved. In modern optical designs, mirrors often produce better
  results than lenses, for example in astronomical instruments. Such
  instruments can be roughed out in OpticalRayTracer's virtual
  workbench.

optgeo
This is in french, but seems to fit some my requirements.
Both seem to be nice 2d tools, both are in the ubuntu repositories. 
OpenRayTrace
From the manual: 

OpenRayTrace is an optical lens design software that performs ray
  tracing. It is built using python, wxPython, and PyOpenGL. It should
  run on any platform that python, wxPython and PyOpenGL run on.

So it should in principle run on a linux box but I didn't manage to do so yet.
Here is a newer fork of the project: https://github.com/BenFrantzDale/OpenRayTrace
It also seems to support 3D ray tracing.
PyOptTools

pyOpTools is a set of packages that allow the simulation of optical
  systems by raytracing as well as some calculations involving
  wavefronts, currently under development. It is written in Python and
  Cython, and is being developed by the technological development group
  of Combustión Ingenieros S.A.S, and the applied optics group of the
  Universidad Nacional de Colombia.

A nice video of how it works can be found on youtube: https://www.youtube.com/watch?v=DB8sfm7pVPI
pyoptics
From the README:

Geometric optics raytracing in python for education and small-project
  design.

geoptics
From the documentation:

geoptics propagates light rays in 2D, in the geometrical optics
  approximation.
Modifying objects should be easy, with a live update of the rays
  propagation. The intent being to give a fun experience with optics.
That being said, physical precision is kept, so geoptics might
  interest engineers or physicists looking for a quick way to test
  ideas.

Still in alpha stage.
A: One of the software for simulating complex lens sets and other elements is Optical Table Simulator. It requires Silverlight though:
It's in short a 2D ray tracing engine, but it simulate many types of optical phenomena like refractions or absorption though different media types. It has defined most of CDGM and Shott glass types as well as other materials including metals, cristals and so on.
Cheers, Radek
A: http://www.onshape.com with Ray Tracer custom feature.
I had some success simulating geometrical light propagation via a set of lenses and prisms using www.onshape.com, which is free, online 3D modelling environment (see attached screenshot). I used a custom feature, named Ray Tracer, created by one of OnShape users. You can define refractive indices of optical components, trace refracted and reflected rays by specifying their origin and initial direction and account for total internal reflection. Generally speaking a CAD program is a natural choice for geometrical ray tracing.
