Findclouds Manual 36
angles approaching 90° this distance will approach infinity. So the angular dependent concentric
circles of the fisheye lens image for small angles φ maps the correspondent circle of the sky plane
almost 1:1. For larger angles the mapped area will rise fast, until it even correspondents to infinity
when approaching 90°.
The second part of the chart shows, how an existing fisheye lens image can be used to create a
reproduction of the original sky plane by rear projection. Now the path of rays starts from the
fisheye lens image and crosses an image plane in height a. The image plane covers the viewing
angle ω. Dependent on ω and a, an image radius of R
ω
results. The crossing point of image plane
and angle φ results in height a and distance b and fulfils equations h / d = a / b = tan(α). It is
obvious to see, that path of rays produces a projected image ("Projection") that shows original sky
plane true to scale.
In practice a constant viewing angle will be assigned to a constant image radius R
ω
, whereby a
constant distance a will result for all angles φ:
a / b = tan(α); α = 90° - φ → a = b * tan(90° - φ)
By use of the specified values for ω and R
ω
the constant a can be calculated:
a = R
ω
* tan(90° - ω)
Using this it can be calculated, which distance b results out of a projection angle φ. So every
radius of the fisheye lens image results in a radius of the plane image. R
ω
sets the unit of
measurement and it is most simple to use the unit "pixel". This way a pixel of the fisheye lens
image can be moved to correspondent position on sky plane:
b = a / tan(90° - φ) = a / tan(90° - 90° * r/R)
with r equal to current radius and R equal to whole radius of fisheye lens image.
By using tan(α) = cot(90° - α), cot(α) = 1/tan(α) and keeping periodicity of tangent in mind it is
possible to simply the equation:
f(r) = a * tan(90° * r/R)
("forward calculation": Fisheye lens pixel to image plane)
This "forward calculation" doesn't include, that size of pixel raises in dependency from the angle,
so projecting pixel one to one causes rising gaps between the pixel. A simple solution to avoid this
problem is to calculate the pixel of the image plane backward to fisheye lens image and taking