From 0f3bfa38b81cdb80a04fa466c581cae43ccee552 Mon Sep 17 00:00:00 2001 From: Daniel Bulant Date: Sun, 19 Oct 2025 22:24:21 +0200 Subject: [PATCH] week7 --- shell.nix | 1 + week7/PlasmaClouds.java | 33 +++++++++++++++++++++++ week7/Squares.java | 56 ++++++++++++++++++++++++++++++++++++++ week7/Triangles.java | 58 ++++++++++++++++++++++++++++++++++++++++ week7/common | 1 + week7/doc.typ | 30 +++++++++++++++++++++ week7/squares.png | Bin 0 -> 23736 bytes week7/triangles.png | Bin 0 -> 22323 bytes 8 files changed, 179 insertions(+) create mode 100644 week7/PlasmaClouds.java create mode 100644 week7/Squares.java create mode 100644 week7/Triangles.java create mode 120000 week7/common create mode 100644 week7/doc.typ create mode 100644 week7/squares.png create mode 100644 week7/triangles.png diff --git a/shell.nix b/shell.nix index 946a87b..73be315 100644 --- a/shell.nix +++ b/shell.nix @@ -5,6 +5,7 @@ pkgs.mkShell rec { buildInputs = with pkgs; [ jdk typst + tinymist ]; nativeBuildInputs = with pkgs; [ jre diff --git a/week7/PlasmaClouds.java b/week7/PlasmaClouds.java new file mode 100644 index 0000000..f59fd75 --- /dev/null +++ b/week7/PlasmaClouds.java @@ -0,0 +1,33 @@ +package week7; + +import common.StdDraw; +import common.StdRandom; + +public class PlasmaClouds { + public static void main(String[] args) { + var hurst = Double.parseDouble(args[0]); + var s = Math.pow(2, 2 * hurst); + var variance = 0.01; + + StdDraw.enableDoubleBuffering(); + + draw(.5, .5, 1, 1, variance, s); + + StdDraw.show(); + } + + public static void draw(double x, double y, double halfSize, double color, double var, double s) { + if (halfSize < 0.01) { + StdDraw.setPenColor((int) (color * 255), (int) (color * 255), 255); + StdDraw.filledRectangle(x, y, halfSize, halfSize); + return; + } + var newColor = Math.clamp(StdRandom.gaussian(color, Math.sqrt(var)), 0, 1); + var newVar = var / s; + var newHalfSize = halfSize / 2; + int[][] offsets = { { 1, 1 }, { -1, 1 }, { -1, -1 }, { 1, -1 } }; + for (var offset : offsets) { + draw(x + newHalfSize * offset[0], y + newHalfSize * offset[1], newHalfSize, newColor, newVar, s); + } + } +} diff --git a/week7/Squares.java b/week7/Squares.java new file mode 100644 index 0000000..e82437c --- /dev/null +++ b/week7/Squares.java @@ -0,0 +1,56 @@ +package week7; + +import common.StdDraw; + +class Squares { + public static void main(String[] args) { + StdDraw.enableDoubleBuffering(); + StdDraw.setCanvasSize(512 * 4, 512); + StdDraw.setXscale(0, 4); + drawSquares(0.5, 0.5, .25, 4, 1); + drawSquares(1.5, 0.5, .25, 4, 2); + drawSquares(2.5, 0.5, .25, 4, 3); + drawSquares(3.5, 0.5, .25, 4, 4); + StdDraw.show(); + } + + public static void drawSquares( + double x, + double y, + double halfLength, + int limit, + int mode) { + var shouldRecurse = limit > 0; + limit--; + var newHalfLength = halfLength / 2.2; + + if (mode == 3 || (mode > 1 && !shouldRecurse)) + drawSingleSquare(x, y, halfLength); + + if (shouldRecurse) { + int[][] offsets = { { 1, 1 }, { -1, 1 }, { -1, -1 }, { 1, -1 } }; + for (var i = 0; i < 4; i++) { + if (mode == 2 && i == 3) + drawSingleSquare(x, y, halfLength); + if (mode == 4 && i == 2) + drawSingleSquare(x, y, halfLength); + drawSquares( + x + halfLength * offsets[i][0], + y + halfLength * offsets[i][1], + newHalfLength, + limit, + mode); + } + } + + if (mode == 1) + drawSingleSquare(x, y, halfLength); + } + + private static void drawSingleSquare(double x, double y, double halfLength) { + StdDraw.setPenColor(StdDraw.GRAY); + StdDraw.filledSquare(x, y, halfLength); + StdDraw.setPenColor(); + StdDraw.square(x, y, halfLength); + } +} \ No newline at end of file diff --git a/week7/Triangles.java b/week7/Triangles.java new file mode 100644 index 0000000..0123c58 --- /dev/null +++ b/week7/Triangles.java @@ -0,0 +1,58 @@ +package week7; + +import common.StdDraw; + +public class Triangles { + public static void main(String[] args) { + int order = Integer.parseInt(args.length > 0 ? args[0] : "1"); + StdDraw.enableDoubleBuffering(); + + drawRootTriangle(); + + if (order > 1) + // vertical alignment to center it properly within the root triangle + recurse(order, 0.5, (height(1)) / 2 - 0.15, 0.5); + + StdDraw.show(); + } + + public static void recurse(int limit, double x, double y, double width) { + limit--; + var height = height(width); + drawTriangle(x, y, width, height); + var halfWidth = width / 2; + if (limit > 0) { + recurse(limit, x, y + height * .75, halfWidth); + recurse(limit, x - halfWidth, y - height / 4, halfWidth); + recurse(limit, x + halfWidth, y - height / 4, halfWidth); + } + } + + /** + * Calculates equilateral triangle's height from it's width / side length + */ + public static double height(double width) { + return 0.5 * Math.sqrt(3) * width; + } + + public static void drawTriangle(double x, double y, double width, double height) { + var topLeft = new double[] { x - width / 2, y + height / 2 }; + var topRight = new double[] { x + width / 2, y + height / 2 }; + var bottom = new double[] { x, y - height / 2 }; + StdDraw.polygon(new double[] { topLeft[0], topRight[0], bottom[0] }, + new double[] { topLeft[1], topRight[1], bottom[1] }); + } + + /** + * Variant of draw triangle, but draws it upside down (base/water-level side is + * down) + */ + public static void drawRootTriangle() { + var width = 1; + var height = height(width); + var offset = (1 - height) / 2; + StdDraw.polygon( + new double[] { 0, 1, 0.5 }, + new double[] { offset, offset, height + offset }); + } +} diff --git a/week7/common b/week7/common new file mode 120000 index 0000000..60d3b0a --- /dev/null +++ b/week7/common @@ -0,0 +1 @@ +../common \ No newline at end of file diff --git a/week7/doc.typ b/week7/doc.typ new file mode 100644 index 0000000..4e4f3e5 --- /dev/null +++ b/week7/doc.typ @@ -0,0 +1,30 @@ +#import "@preview/wrap-it:0.1.1": wrap-content +#import "./common/common.typ" : * + +#show: template + += Week 6 + +== Exercise 2.3.22 + +_Recursive squares._ Write a program to produce each of the following recursive +patterns. The ratio of the sizes of the squares is $2.2:1$. To draw a shaded square, +draw a filled gray square, then an unfilled black square. + +#image("squares.png") + +#embedClass(name: "Squares") + +== Exercise 2.3.27 + +_Sierpinski triangles._ Write a recursive program to draw Sierpinski triangles (see PROGRAM 2.2.3). +As with Htree, use a command-line argument to control the depth of the recursion. + +#embedClass(name: "Triangles") + +== Exercise 2.3.31 + +_Plasma clouds._ Write a recursive program to draw plasma clouds, using the +method suggested in the text. + +#embedClass(name: "PlasmaClouds") \ No newline at end of file diff --git a/week7/squares.png b/week7/squares.png new file mode 100644 index 0000000000000000000000000000000000000000..1c53df940a2a2182136cb115532b4718ead3afce GIT binary patch literal 23736 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 literal 0 HcmV?d00001 diff --git a/week7/triangles.png b/week7/triangles.png new file mode 100644 index 0000000000000000000000000000000000000000..c922116067045711626c40b671e04a81877998ba GIT binary patch literal 22323 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