# Julia Set TODO ``` ___________________________________________________________________ | Julia Set for -0.34 - 0.63i :. | | ..':. .. | | '':.:''' .. .. | | :':::.. '' ::. .. :.' | | '::::. :: :::. . :.'': . | | ......':::.::.:: ...::.:::.::.. . | | :::::::::':'.':.::::::::':.::''::.. | | . '::::'':':::':'':::' ::'' ' | | ':. . .. ..::'::':::. ' :' | | . :: :' ::..::::::: ::: ':::.. ' | | :':::: '.:::::::::'.::::' '' | | .:::::' ':::::::::. ''::::'. | | :. '::::'.::::::::::. '::':.' | | . . '':::. ::: ::::::::'::' .:::: | | :':. ... ':::.:':::'' ' ' ''. | | ..:: .::::::...':.::::::.: | | :::...' '.::::::::'.: .:.:'::::'': | | '' :. : .:''':' :::'::':::. ' ' | | '::'': '' '::: ::''::::: | | :: ':. '' '':::.: | | ' ' ' ::.:.'.' | | ::' | | ' | |___________________________________________________________________| ``` # Code The following code is a simple [C](c.md) program that renders given Julia set into terminal (for demonstrative purposes, it isn't efficient or do any [antialiasing](antialiasing.md)). ``` #include <stdio.h> #define ROWS 30 #define COLS 70 #define SET_X -0.36 // Julia set parameter #define SET_Y -0.62 // Julia set parameter #define FROM_X -1.5 #define FROM_Y 1.0 #define STEP (3.0 / ((double) COLS)) unsigned int julia(double x, double y) { double cx = x, cy = y, tmp; for (int i = 0; i < 1000; ++i) { tmp = cx * cx - cy * cy + SET_X; cy = 2 * cx * cy + SET_Y; cx = tmp; if (cx * cx * cy * cy > 10000000000) return 0; } return 1; } int main(void) { double cx, cy = FROM_Y; for (int y = 0; y < ROWS; ++y) { cx = FROM_X; for (int x = 0; x < COLS; ++x) { unsigned int point = julia(cx,cy) + (julia(cx,cy + STEP) * 2); putchar(point == 3 ? ':' : (point == 2 ? '\'' : (point == 1 ? '.' : ' '))); cx += STEP; } putchar('\n'); cy -= 2 * STEP; } return 0; } ```