Added inward spiral path
authorMartin Read <martin@blackswordsonics.com>
Tue, 24 Sep 2013 19:43:33 +0000 (20:43 +0100)
committerMartin Read <martin@blackswordsonics.com>
Tue, 24 Sep 2013 19:43:33 +0000 (20:43 +0100)
fov.c

diff --git a/fov.c b/fov.c
index a204260..e84471d 100644 (file)
--- a/fov.c
+++ b/fov.c
@@ -331,6 +331,66 @@ void resolve_radiance(Radiance *rad)
             }
         }
         break;
+    case Reo_spiral_in:
+        for (i = -(rad->radius), j = -(rad->radius), k = rad->radius; k >= 0; )
+        {
+            if (rad->affected[MAX_FOV_RADIUS + i][MAX_FOV_RADIUS + j])
+            {
+                rad->effect_fun(rad->centre_y + i, rad->centre_x + j, rad->pvt);
+            }
+            if ((i == 0) && (j == 0))
+            {
+                k = -1;
+            }
+            else if (i == -k)
+            {
+                if (j == k)
+                {
+                    ++i;
+                }
+                else
+                {
+                    ++j;
+                }
+            }
+            else if (j == k)
+            {
+                if (i == k)
+                {
+                    --j;
+                }
+                else
+                {
+                    ++i;
+                }
+            }
+            else if (i == k)
+            {
+                if (j == -k)
+                {
+                    --i;
+                }
+                else
+                {
+                    --j;
+                }
+            }
+            else if (j == -k)
+            {
+                if (i == 1 - k)
+                {
+                    --k;
+                    i = -k;
+                    j = -k;
+                }
+                else
+                {
+                    --i;
+                }
+            }
+        }
+        break;
+
     default:
         print_msg("FATAL: attempt to use unimplemented radiance evaluation order %d\n", rad->order);
         abort();