Apfelmännchen Zeichnen mit ASCII-Zeichen

Manda

Erfahrenes Mitglied
Hallo leute,
ich muss ein Apfelmännchne(oder auch Mandelbrotmenge genannt) bildlich darstellen (mit ASCII Zeichen). Sowas ungefähr: http://www.creative-thinking.de/images/apfelmaennchen.gif
Dafür habe ich eine Berechnung gemacht (siehe code), für ein Bestimmtes Intervall.

C++:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define XUNTEN	 -2.1
#define XOBEN    0.6
#define YUNTEN  -1.2  
#define YOBEN    1.2

#define XSCHRITT 0.5
#define YSCHRITT 0.5

struct punkt 
{
	double xwert;
	double ywert;
	double betrag;
	int divergenz_nummer; 
};

void berechnung(struct punkt);

int main(void)
{	
	double xaktuell = XUNTEN;
	double yaktuell = YUNTEN;
	char bild[80][25]; //Nicht sicher ob das array ausreicht
	int i				 = 0;
	int j				 = 0;

	for(i=0;i<80;i++)//wollte das * zeichen nehmen um es darzustellen
	{
		for(j=0;j<25;j++)
		{
			bild[i][j]='*';
       }
   }


	for(xaktuell=XUNTEN; xaktuell>=XUNTEN && xaktuell<=XOBEN; xaktuell+=XSCHRITT)
	{
		for(yaktuell=YUNTEN; yaktuell>=YUNTEN && yaktuell<=YOBEN; yaktuell+=YSCHRITT)
		{
			struct punkt punkt = { xaktuell, yaktuell, 0, -1 };
			berechnung(punkt);
		}
	}
	//Hier versuch ich es zu zeichnen
	for(i=0; i<80; i++)
	{
		for(j=0; j<25; j++)
		{
			printf("%c ", bild[i][j]);
		}
		printf("\n");
	}

	printf("\n\n");
	return 0;
}

void berechnung(struct punkt punkt)
{
	double xanfang = punkt.xwert;
	double yanfang = punkt.ywert;
	double xneu    = 0;
	double yneu    = 0;
	double xalt    = 0;
	double yalt    = 0;
	int i				= 0;

	do
	{
		xneu =  pow(xalt, 2) - pow(yneu, 2) + xanfang;
		yneu = (2 * xalt * yalt ) + yanfang;

		i++; 

		xalt = xneu;
		yalt = yneu;

		punkt.betrag = sqrt( pow(xneu, 2) + pow(yneu, 2) );

		if(punkt.betrag > 2)
		{
			punkt.divergenz_nummer = i;
			printf("\n [%4.1f | %4.1f]: Divergent ab Iterationsschritt: %d", xanfang, yanfang, i);
		}
	}
	while( (punkt.divergenz_nummer == -1) && (i <100) );
	
	if(punkt.divergenz_nummer == -1)
	{
		printf("\n [%4.1f | %4.1f]: Folge ist Konvergent", xanfang, yanfang);
	}
}

Problem ist allerdings, dass ich nicht weis, wie ich das Bild darstellen könnte. Müsste ich die berechneten Punkte zurück geben und dann ins array packen?
Oder reicht es, dass intervall (x: -2.1 - 06 und y:-1.2 - 1.2) zu nehmen und dann die koordinaten zu übergeben?
Falls ja, wie gibt man einem Array die koordinaten? Also das er von (-2.1 ; -1.2) anfängt zu zeichen.

Hoffe ich konnte mich verständlich ausdrücken. Hat jemand einen Vorschlag für mich?
Danke schonmal!

Gruß
Manda
 
Zurück