Newsgroup: it.comp.lang.c
Titolo: Frattale di Von Koch

Mi servirebbe una mano di aiuto per il seguente problema:
Preparare in linguaggio C un programma per la costruzione di una immagine
ricorsiva del tipo riportato in figura.A tal fine si noti che:
1)L'immagine di livello k deve essere generata suddividendo ogni lato della
figura di livello k-1 in tre parti
   e utilizzando la parte centrale come base di un nuovo triangolo
equilatero come mostrato in figura.
2) Sono forniti dall'esterno la lunghezza del segmento iniziale(livello 0)
ed il livello di ricorsione finale n.
3)Sono disponibili al programmatore le funzioni : startgraphics() che
inizializza il sistema grafico, e
   Line(float x1,float y1,float x2,float y2), che traccia un segmento dal
punto di coordinate(x1,y1) al punto
   di coordinate(x2,y2).
Questo e' il disegno:
                                                       ---------------------
----------------
                                                                  Livello 0
/\
                                                                          /
\
                                                                        /
\
                                                                      /
\
                                                     ------------/
\---------------
                                                               Livello 1
Ci sarebbe pure il livello 2 ma non lo disegno perché e' troppo
complicato...comunque credo che abbiate capito.!!!
Scusate per la lunghezza del messaggio e' che giovedì ho il compito scritto
e sono riuscito a fare tutti i compiti precedenti tranne questo che mi sta'
facendo perdere un sacco di tempo!!
Gradirei anche una descrizione solo formale dell' algoritmo comunque anche
il codice non sarebbe male!!
Please se potete rispondete in e-mail !!!!
<---------------------------------------------------------------->
  ATTENZIONE:per rispondere in e-mail togli
                          nopubblicita dall ' indirizzo..
  POWWOW:    
pier...@hotmail.com
.
<-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:->

   di coordinate(x2,y2).
Questo e' il programma cosi' come l'ho costruito io, ma ne ho in mente uno
migliore per far apparire i triangoli tutti dalla parte esterna alle figure gia'
'costruite :
#include <math.h>
#include <graphics.h>
#include <stdlib.h>
#include <conio.h>
float sqr( float x ) { return (x*x); }
void fractal(float a, float b, float c, float d, int level)
{
  float x, y, e, f, g, h, A, Dx, Dy, Coeff;
  Dx = (c - a);
  Dy = (d - b);
  Coeff = -Dx / Dy;
  e = a + Dx / 3.0;
  f = b + Dy / 3.0;
  g = a + 2.0 * Dx / 3.0;
  h = b + 2.0 * Dy / 3.0;
  A = sqr(h - f) + sqr(g - e);
  x = (a + c) / 2.0 + sqrt(A / (1.0 + sqr(Coeff)));
  y = (b + d) / 2.0 + Coeff * sqrt(A / (1.0 + sqr(Coeff)));
  if (level)
  {
     line(e, f, x, y);
     line(x, y, g, h);
     fractal(e, f, x, y, level - 1);
     fractal(x, y, g, h, level - 1);
  }
}
int main()
{
  float x0, y0, x1, y1, _x0, _y0, _x1, _y1,
	mx, my, A, B, C, D, E, F, G, x, y;
  int gd = DETECT, gm;
  initgraph(&gd, &gm, "\\borlandc\\bgi");
  randomize();
/*
  x0 = rand() % 640;
  y0 = rand() % 480;
  x1 = rand() % 640;
  y1 = rand() % 480;
*/
  x0 = 0;
  y0 = 239;
  x1 = 639;
  y1 = 479;
  line(x0, y0, x1, y1);
  fractal(x0, y0, x1, y1, 4);
  return 0;
}
Andrea Laforgia
----------------------------------------------------------------------
Sto facendo il militare.....vi rispondo tra una o due settimane !!! :)