Here is a setup to help debugging refraction using a sphere and a particular ray. I have do track single rays like this

**every time**I implement refraction. Here is the setup:

So let's put a sphere of radius 1 the with center (0,0,0). Now all of the action is in XY so I will leave off the Zs. First, what is

**A**?

If it is to hit where the surface of the sphere is at 45 degrees, it has to have y component cos(45) = sqrt(2)/2 . So the origin of the ray should be o = (-something, sqrt(2)/2). And v = (1, 0).

**B**, the reflected direction should have origin (-sqrt(2)/2, sqrt(2)/2) and direction (0,1).

What about

**C**? It has origin (-sqrt(2)/2, sqrt(2)/2) and direction (1+sqrt(2)/2, -sqrt(2)/2) which has a length of about 1.84776. So

**C**= (0.9239, -0.3827) approximately.

But what refractive index produces such a

**C**? We an see that two of the sides have length 1, so the two angles are the same, and we can see that sin(theta) = (sqrt(2)/2) / 1.8776 = 0.38268. So the refractive index must be the ratio of that ans sin(45). So refractive_index = 1.8478.

So what is

**D**? By symmetry it must leave at 45 degrees so

**D**= (1, -1) / sqrt(2).

And finally E reflects across the X axis and

**E**= (-0.9239, -0.3827) approximately

## No comments:

## Post a Comment