summary refs log tree commit diff
path: root/bin/brot.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-04-12 01:08:06 -0400
committerJune McEnroe <june@causal.agency>2018-04-12 01:08:06 -0400
commit8b0f4e577b7f70409e5d0250b21dc54fe6b9e13c (patch)
treeae6e98b435cf36055570faab809c342a94a829a8 /bin/brot.c
parentClean up brot input and status (diff)
downloadsrc-8b0f4e577b7f70409e5d0250b21dc54fe6b9e13c.tar.gz
src-8b0f4e577b7f70409e5d0250b21dc54fe6b9e13c.zip
Combine brot rotate and scale
Diffstat (limited to 'bin/brot.c')
-rw-r--r--bin/brot.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/bin/brot.c b/bin/brot.c
index b12e4208..c8922465 100644
--- a/bin/brot.c
+++ b/bin/brot.c
@@ -46,8 +46,7 @@ static uint32_t color(uint32_t n) {
 }
 
 static double complex translate = -0.75;
-static double complex rotate = 1.0;
-static double scale = 2.5;
+static double complex transform = 2.5;
 
 void draw(uint32_t *buf, size_t width, size_t height) {
     double yRatio = (height > width) ? (double)height / (double)width : 1.0;
@@ -56,7 +55,7 @@ void draw(uint32_t *buf, size_t width, size_t height) {
         for (size_t x = 0; x < width; ++x) {
             double zx = ((double)x / (double)width - 0.5) * xRatio;
             double zy = ((double)y / (double)height - 0.5) * yRatio;
-            uint32_t n = mandelbrot((zx + zy * I) * scale * rotate + translate);
+            uint32_t n = mandelbrot((zx + zy * I) * transform + translate);
             buf[y * width + x] = color(n);
         }
     }
@@ -73,14 +72,14 @@ bool input(char in) {
         case 'q': return false;
         case '.': depth += depthDelta; break;
         case ',': if (depth > depthDelta) depth -= depthDelta; break;
-        case 'l': translate += translateDelta * scale * rotate; break;
-        case 'h': translate -= translateDelta * scale * rotate; break;
-        case 'j': translate += translateDelta * I * scale * rotate; break;
-        case 'k': translate -= translateDelta * I * scale * rotate; break;
-        case 'u': rotate *= cexp(rotateDelta * PI * I); break;
-        case 'i': rotate /= cexp(rotateDelta * PI * I); break;
-        case '+': scale /= scaleFactor; break;
-        case '-': scale *= scaleFactor; break;
+        case 'l': translate += translateDelta * transform; break;
+        case 'h': translate -= translateDelta * transform; break;
+        case 'j': translate += translateDelta * I * transform; break;
+        case 'k': translate -= translateDelta * I * transform; break;
+        case 'u': transform *= cexp(rotateDelta * PI * I); break;
+        case 'i': transform /= cexp(rotateDelta * PI * I); break;
+        case '+': transform /= scaleFactor; break;
+        case '-': transform *= scaleFactor; break;
     }
     return true;
 }
@@ -89,11 +88,10 @@ const char *status(void) {
     static char buf[256];
     snprintf(
         buf, sizeof(buf),
-        "-d %u -t %g+%gi -r %g+%gi -z %g",
+        "-i %u -t %g+%gi -f %g+%gi",
         depth,
         creal(translate), cimag(translate),
-        creal(rotate), cimag(rotate),
-        scale
+        creal(transform), cimag(transform)
     );
     return buf;
 }