Welcome to the Corneal Topography
and Ray-trace page (and it needs some serious updating)


Goto the zs dependancy page

This setup was used to generate the trace:

Ray-trace setup diagram

Trace File Amplitude [mm] Frequency Image size
Without Spokes:
f8a0125 0.0125 8 512 x 512 (6.4 x 6.4mm)
f8a0125l 0.0125 8 1024 x 1024 (12.8 x 12.8mm)
f8a025 0.025 8 512 x 512 (6.4 x 6.4mm)
f8a025l 0.025 8 1024 x 1024 (12.8 x 12.8mm)
With Spokes:
f8a0125s 0.0125 8 1024 x 1024 (7.0 x 7.0mm)
f8a0125x 0.0125 8 512 x 512 (7.0 x 7.0mm)
f8a0125w 0.0125 8 512 x 512 (10.0 x 10.0mm)
f7a0125s 0.0125 7 1024 x 1024 (7.0 x 7.0mm)
f7a0125x 0.0125 7 512 x 512 (7.0 x 7.0mm)
f7a0125w 0.0125 7 512 x 512 (10.0 x 10.0mm)

Try these links if you cannot see the table above:

Without Spokes:

With Spokes:

Ray-trace Settings:

z0 = 120
R = 8
f(x,y) = -sqrt(R2 - x2 - y2) + R + z0 + ampl * cos(freq * atan(y/x))
Where the addition of the cos() function only applies for sqrt(x2 + y2) > 2
dz/dx = (f(x+0.001, y) - f(x-0.001, y)) / 0.002
dz/dy = (f(x, y+0.001) - f(x, y-0.001)) / 0.002

l(xl,yl) = sqrt(xl2 + yl2)

Trace equations:

Reflection vector vR:   [0, 0, -1]T (this is a unit vector)
Normal vector vN:       [-dz/dx, -dz/dy, 1]T
Normal unit vector vNu: vN / |vN|

Surface to Placido disc unit vector vPLu

Reflection equation:    vPLu = 2 * vNu * (vNu * vR) - vR

Placido disk has rotational symetry which simplifies the intersection calculation of the source vector (vPLu) and the Placido surface (vOL). Mapping the placido disc to a 2D coordinate system and then determine xl (the x-coordinate of intersection on the placido disc):

x(vector) = x ordinate of 'vector'

rplu = sqrt(x(vPLu)2 + y(vPLu)2)
r = sqrt(x2 + y2)
k = (z - r) / (rplu - z(vPLu)
xl = r + k * rplu

The black/white rings are defined at an interval (RINGINTERVAL) of 4.0

int(xl / RINGINTERVAL) is odd  --> white ring
int(xl / RINGINTERVAL) is even --> black ring

The spokes are generated as an inversion of the ring's black/white pattern in a 0.28 (9/32) degree angle with and 64 spokes over the full 360 degrees.

The alternative for using the 2D shortcut is to solve:

vOP + k * vPLu = vOL

with

vOP = [x, y, z]T
vOL = [xl, yl, sqrt(xl2 + yl2)]T

This yields a quadratic function in k. Using the 2D shortcut is prefered since solving a quadratic is more expensive than a simple linear equation. Secondly, the 2D case only yields one solution for k whereas the quadratic results in two.


Copyright © 1997 - Fortune Tales & Hacker's Fortune.
Page last updated: 14-Feb-1997. Comments: mail me