#include #include using namespace std; double X_MIN = -1.0; double X_MAX = 1.0; double Y_MIN = -1.0; double Y_MAX = 1.0; double X_SIZE = X_MAX - X_MIN; double Y_SIZE = Y_MAX - Y_MIN; const int WIDTH = 100; const int HEIGHT = 100; int ITERATIONS = 1000; complex c( 0.3, 0.5 ); double PRISONERS_LIMIT = 4.0; char *jset; /** * check if function converge or not */ bool is_prisoner(complex z_0) { complex z = z_0; int i = 0; while ((std::norm(z) < PRISONERS_LIMIT) and (i < ITERATIONS)) { z = z * z + c; i = i + 1; } return i >= ITERATIONS; } // ----------------------------- // // ----------------------------- void julia_set() { complex z_0; for (int y = 0; y < HEIGHT; ++y) { for (int x = 0; x < WIDTH; ++x) { z_0 = complex(X_MIN + ((double)x) / WIDTH * X_SIZE, Y_MIN + ((double)y) / HEIGHT * Y_SIZE ); if (is_prisoner(z_0)) { jset[y * WIDTH + x] = 'X'; } else { jset[y * WIDTH + x] = '.'; } } } } void print() { for (int y = 0; y < HEIGHT; ++y) { for (int x = 0; x < WIDTH; ++x) { cout << jset[ y * WIDTH + x ]; } cout << endl; } } // ----------------------------- // program // ----------------------------- int main(int argc, char *argv[]) { double factor = 1.0; if (argc > 1) factor = atof( argv[1] ); X_MIN *= factor; X_MAX *= factor; Y_MIN *= factor; Y_MAX *= factor; X_SIZE = X_MAX - X_MIN; Y_SIZE = Y_MAX - Y_MIN; jset = new char [ HEIGHT * WIDTH ]; julia_set(); cout << "
" << endl;
	print();
	cout << "
" << endl; return EXIT_SUCCESS; }