First such improvement is illustrated below. In that setup there is one large reflector and a smaller one. Basic beam-tracing will suggest that there would be possibility for third and fourth order reflections whereas there are none in reality. This can be seen by applying beam-clipping against originating beam. The solid angle covered by the smaller reflector is relatively narrow, and when that is reflected against the larger reflector, the size of the beam should not increase as it will do in the basic beam-tracing. After proper beam-clipping, it is seen that now the second-order beam from the larger reflector is clearly narrower, and the smaller reflector is completely out of that meaning that there can't be any higher order reflection paths in this setup.
The only algorithmic change would be that the constructBeam needs to make the clipping of the beams such that the resulting beam is the intersection of the new beam and of the originating beam after reflecting it against the reflector.
The beam-tracing algorithm that takes this clipping into account would look as in the following.
Note especially the line 8 as it is possible that the new beam gets completely clipped out, and in that case there is no reason to consider this surface for the current image source further, and it can be neglected.
|III.3 Beam-tracing technique (previous)||III.3 Beam-tracing technique (up)||III.3.3 Clipping of beams against room geometry (next)|