Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- using namespace std;
- int fractalCalc(double x0,double y0, double zoom);
- int main()
- {
- //constant variables.
- const double xMin = -2.5; // -2.5
- const double xMax = 1; // 1
- const double yMin = -1; // -1
- const double yMax = 1; // 1
- const double incRate = 0.045;
- //variable declaration.
- int color;
- int block;
- double x;
- double y;
- double xScaleMin = 0;
- double xScaleMax = 0;
- double yScaleMin = 0;
- double yScaleMax = 0;
- double zoom = 1;
- bool ext = true;
- do
- {
- //variable reset.
- x = xMin;
- y = yMin;
- cin.clear();
- bool endLoop = true;
- while (endLoop)
- {
- cin.clear();
- color = fractalCalc(x + xScaleMin, y + yScaleMin, zoom);
- if (color >= 0 && color <= 250)
- block = 176;
- else if (color >= 251 && color <= 500)
- block = 177;
- else if (color >= 501 && color <= 750)
- block = 178;
- else if (color >= 751 && color <= 1000)
- block = 219;
- cout << char (block);
- if (x <= xMax)
- x += incRate;
- else
- {
- y += incRate;
- x = xMin;
- cout << endl;
- }
- if (y > yMax)
- endLoop = false;
- }
- char extChar;
- cout << "+ and - for zoom, W,A,S,D to move camera: ";
- cin >> extChar;
- switch (extChar)
- {
- case '+':
- zoom += 0.1;
- break;
- case '-':
- zoom -= 0.1;
- break;
- case 'a':
- xScaleMin -= 0.2;
- xScaleMax += 0.2;
- break;
- case 'd':
- xScaleMin += 0.2;
- xScaleMax -= 0.2;
- break;
- case 'w':
- yScaleMin -= 0.2;
- yScaleMax += 0.2;
- break;
- case 's':
- yScaleMin += 0.2;
- yScaleMax -= 0.2;
- break;
- default:
- cout <<"will now exit.";
- ext = false;
- }
- system("CLS"); //I do realise I shouldn't use this...
- } while (ext);
- return 0;
- }
- int fractalCalc(double x0, double y0, double zoom)
- {
- double x = 0;
- double y = 0;
- int iteration = 0;
- int max_iteration = 1000; //1000
- double xtemp;
- while (x*x + y*y < 2*2 && iteration < max_iteration) //x*x + y*y < 2*2 && iteration < max_iteration
- {
- xtemp = x*x - y*y + x0;
- y = 2*x*y + y0;
- y /= zoom;
- x = xtemp;
- x /= zoom;
- iteration++;
- }
- return iteration;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement