Natural Curiosity: Stretching Reflections 2

After my earlier post on this topic, I talked to a few people about why they thought these stretching reflections happened. There were a few different ideas, and when I talked to my brother about it he pointed out something in one of the images on my last post that was inconsistent with my explanation.

Sun Reflection | Photo by oboejoe92 on Flickr CC BY-NC 2.0
Sun Reflection | Photo by oboejoe92 on Flickr CC BY-NC 2.0

My hypothesis would have predicted that reflections would stretch down, but not up. However, looking more carefully at this image, the reflection of the Sun is clearly both stretching down and stretching up to the horizon. So it can’t be explained just by the surface appearing to be rougher as it gets closer to the observer.

However, in that discussion we came up with a new hypothesis. As I said in my last post, if we imagine a rough surface as being made up of a lot of small flat mirrors at random angles, some of them will be at the correct angle to reflect light toward you so you’ll see a reflection in those places. The new hypothesis was that the angle required for this would be less extreme above and below the reflection than to the side of it.

In order to test this, I needed 3 things:

  1. A light source
  2. A flat reflective surface
  3. A wedge
  4. A flat surface to rest it all on

Luckily, these things were all readily at hand. For a light source, I used a nearby lamp. My phone’s screen made a good flat reflective surface. I used the alarm remote for my car as the wedge, and rested everything on the floor. I’m sure you could find similar objects to reproduce this experiment for yourself.

First, I lined up the lamp, my phone, and myself so that I could see the lamp’s reflection in the centre of my phone’s screen when it was sitting flat on the floor. Then, using my makeshift wedge I tiled the screen of my phone away from me, then moved the tilted reflective surface towards me until the lamps’ reflection was in the middle of the screen.

I then repeated this for the other directions – away from me, to the left, and to the right. Because my phone isn’t square, I also rotated it so it was landscape when I moved it towards me and away from me, but portrait when moving it left and right. That made it easier to judge when the reflection was in the centre of its screen.

What I found was that I had to move the phone a lot further toward me or away from me than I had to move it left or right in order to see the reflection again. I think this explains, at least in part, why reflections on rough surfaces appear to be stretched towards you.

We can get a rough approximation of the outline of a reflection on a rough surface by assuming it has a maximum roughness, i.e. the maximum angle at which one of those little mirrors that make up its rough surface could be tilted. Then, the approximate outline of the reflection would be along the curve where a mirror at that maximum angle, facing in the right direction, would reflect light toward you.

On a perfectly flat surface, this maximum angle is 0. So the shape of the reflection is exactly as you’d expect, undistorted.

However, as the maximum roughness of the surface increases, the outline moves out from the undistorted reflection. And the reflection doesn’t just get larger, it gets stretched towards you. It’s because the angle required to reflect it at you is less within that outline that reflections on rough surfaces appear to be stretched.

I’ve written a small JavaScript simulation to show this effect. Unfortunately WordPress doesn’t let me embed it in this post, but you can have a play with it by clicking on the image below:

Stretching reflection simulation
Stretching reflection simulation

If you’re interested, you can also take a look at the source on GitHub.

The simulation works by sending out rays from the observer to hit different parts of a horizontal reflective surface. When a ray hits the surface, the simulation calculates the angle that would be required at that point to cause the simulation’s light source (displayed as a red dot) to be reflected there. Places where there would be a reflection are shaded according to the required angle, with brighter yellow areas being flatter, and areas where there would be no reflection are black. The simulation also draws a reflected red dot to show where the reflection would be on a very flat surface.

There are a few numbers you can configure to see how the shape of the shadow changes under various scenarios:

Light source distance
The distance “into the screen” that the light source (the red dot) is from you.
Light source height
How much higher than you the light source is. You’ll want to make sure it’s higher than the reflector.
Reflector height
How much lower (using negative numbers) the reflective surface is than you. The simulation doesn’t look above horizontal for reflections, so this won’t work with positive numbers.
Maximum angle
The maximum amount of roughness the reflective surface can have. Higher numbers are rougher, lower numbers are flatter.
Step size
How far apart the rays are, in degrees. The default setting is 0.1 degrees. Larger step sizes will make the simulation run faster, but it will be less precise.

The simulation shows how reflections can be stretched vertically in this way, depending on the roughness of the reflecting surface and the relative positions of the observer and the light source. If you make the light source very far away and near the horizon, you’ll see that the reflection can stretch all the way up to the horizon just like the Sun’s reflection in that picture.

However, there’s still a decent amount of horizontal spreading so I don’t think this entirely explains the stretched reflections. Yesterday, I saw this beautiful photo on Twitter, taken by Ian Griffin of a sunset in Otago:

In this photo, there is pretty much no horizontal stretching. This can be seen in the black lines in the reflection caused by trees blocking the Sun’s light – if the reflection were stretching sideways then these would be blurred and wouldn’t have such a uniform thickness.

There could be a few things helping in this case. Because this particular example is taken with water being the reflective surface, and the observer was standing at the shore, the waves are mostly perpendicular to the line of sight. That would help minimise horizontal scattering.

It can’t be just that, though, because the same stretching is seen on rough surfaces where the roughness has no direction, such as wet roads:

Wet road reflections | Photo by Thomas Hawk on Flickr CC BY-NC 2.0
Wet road reflections | Photo by Thomas Hawk on Flickr CC BY-NC 2.0

I think the rest of this could possibly be explained by surfaces that reflect the light straight towards you from under the light source appearing larger, because they’re angled towards you. Surfaces to either side of the reflection could also reflect the light towards you, but perspective would cause them to be foreshortened and therefore contribute less to the overall picture.

What do you think?


2 thoughts on “Natural Curiosity: Stretching Reflections 2

    1. Thanks Mark, I found that site has this question as well, which has a focus on the road reflections but is marked as a duplicate of that one you found:

      I’m finding it interesting trying out different settings in my simulation to see if I can replicate the reflection shapes from each of these example images. For example, setting the light source at 20000 units distant and 1000 units high and setting the maximum roughness to 15 degrees seems to get pretty close to the main example photo from your link, I think.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s