73 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Source$
 | |
|  * $State$
 | |
|  * $Revision$
 | |
|  */
 | |
| 
 | |
| /* Adapted from code by Chris Losinger. (This is the non-obfuscated
 | |
|  * version...
 | |
|  * 
 | |
|  * http://www.codeproject.com/cpp/mandelbrot_obfuscation.asp
 | |
|  */
 | |
|  
 | |
| #include <stdlib.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| enum
 | |
| {
 | |
| 	ROWS = 40,
 | |
| 	COLUMNS = 60,
 | |
| 	
 | |
| 	MAX_ITERATIONS = 255
 | |
| };
 | |
| 
 | |
| void nl(void)
 | |
| {
 | |
| 	write(1, "\n", 1);
 | |
| }
 | |
| 
 | |
| void out(int n)
 | |
| {
 | |
| 	const char* chars = "****++++++----  ";
 | |
| 	write(1, chars + (n/16), 1);
 | |
| }
 | |
| 
 | |
| int main(int argc, const char* argv[])
 | |
| {
 | |
|     /* Size and position of the visible area. */
 | |
|     
 | |
|     double view_r = -2.3, view_i = -1.0;
 | |
|     double zoom = 0.05;
 | |
|     int x, y, n;
 | |
| 
 | |
|     for (y=0; y < ROWS; y++)
 | |
|     {
 | |
|         double c_i = view_i + y * zoom;
 | |
|         
 | |
|         for (x=0; x < COLUMNS; x++)
 | |
|         {
 | |
|             double c_r = view_r + x*zoom;
 | |
|             double z_r = c_r;
 | |
|             double z_i = c_i;
 | |
|             
 | |
|             for (n=0; n < MAX_ITERATIONS; n++)
 | |
|             {
 | |
|                 double z_r2 = z_r * z_r;
 | |
|                 double z_i2 = z_i * z_i;
 | |
| 
 | |
|                 /* Have we escaped? */
 | |
|                 
 | |
|                 if (z_r2 + z_i2 > 4)
 | |
|                     break;
 | |
| 
 | |
|                 /* z = z^2 + c */
 | |
|                 z_i = 2 * z_r * z_i + c_i;
 | |
|                 z_r = z_r2 - z_i2 + c_r;
 | |
|             }
 | |
| 
 | |
|            	out(n);
 | |
|         }
 | |
|         nl();
 | |
|     }
 | |
|     
 | |
|     return 0;
 | |
| }
 |