Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float a, b, c, d, x, y, xp, yp;
- int x_, y_;
- PFont f;
- int i = 0;
- int imax = 10000; //number of steps to take
- int hit[][] = new int[1500][1000];
- void setup() {
- size(1500, 1000, P3D);
- f = createFont("Arial", 16, true);
- a = 0.59;
- b = -3;
- c = -1.4;
- d = 1.2;
- xp = random(-2, 2);
- yp = random(-2, 2);
- background(0);
- fill(255, 0, 0);
- noStroke();
- textFont(f, 20);
- text("a = " + str(a) + "\nb = " + str(b) + "\nc = " + str(c) + "\nd = " + str(d), 10, 30);
- for (int j = 0; j < 1500; j++) {
- for (int k = 0; k < 1000; k++) {
- hit[j][k] = 0;
- }
- }
- }
- void draw() {
- //background(0);
- if (i < imax) {
- xp = random(-2,2);
- yp = random(-2,2);
- b = map(i, 0, imax, -3, -2); //set your interval here
- for (int j = 0; j < 50000; j++) { //set nuber of iterations
- x = sin(yp * b) - c * sin(xp * b);
- y = sin(xp * a) + d * sin(yp * a);
- xp = x;
- yp = y;
- x_ = int(map(i, 0, imax, 0, width));
- y_ = int(map(y, -1, 1, 1000, 0)); //set bound of y
- if (j > 5000 && x_ >= 0 && x_ < 1500 && y_ >= 0 && y_ < 1000) { //set number of omitted iterations
- hit[x_][y_] += 1;
- set(x_, y_, color(255));
- }
- }
- println(str(float(i)/imax * 100) + "% done");
- i++;
- } else {
- background(0);
- int max = 0;
- for (int j = 0; j < 1500; j++) {
- for (int k = 0; k < 1000; k++) {
- max = max(max, hit[j][k]);
- }
- }
- for (int j = 0; j < 1500; j++) {
- for (int k = 0; k < 1000; k++) {
- if (hit[j][k] > 0) {set(j, k, color(map(log(float(hit[j][k])), 0, log(max), 0, 255)));}
- }
- }
- fill(255, 0, 0);
- noStroke();
- textFont(f, 20);
- text("a = " + str(a) + "\nb = " + str(b) + "\nc = " + str(c) + "\nd = " + str(d), 10, 30);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement