mirror of
https://github.com/danbulant/introductionToProgramming
synced 2026-05-19 04:18:32 +00:00
33 lines
1 KiB
Java
33 lines
1 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|