fraktale, tryb okienkowy

0

Witam!

potrzebuję zrobić program za pomocą fraktali który by narysował trójkąt a w nim 3 trójkay,a w tych trójkątach kolejne trójkąty itd:))

używum visual studio2001

Pomocy!!

0

Bez biblioteki Logo z interfejsem Turtle to chyba nie da rady tego zrobić... sorry... Swoją drogą istnieje pewien algorytm, który polega na tym, że najsamprzód określasz położenie wierzchołków A, B, C trójkąta, a potem losujesz dowolny punkt P ze środka tego trójkąta, następnie znajdujesz wierzchołek W do którego jest najbliżej od punktu P (W należy do zbioru {A, B, C}), na koniec malujesz kropę dokładnie w połowie odcinka PW. Powtarzać losowanie i malowanie kropek aż oczom ukaże się trójkąt Sierpińskiego. Wtedy można zaprzestać procederu.

gsk

0

Eeetam

Zaciekawił mnie ten temat, że aż napisałem programmik w BCB
Nie jest to szczyt wyrafinowania ;-P ale działa (nawet nie wiem czy tak się rysuje fraktale)
A na C# przełóż sobie sam.

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
/*  //deklaracje zmiennych w pliku naglowkowym
    TPoint a, b, c;
    void sierp(TPoint A, TPoint B, TPoint C, int licz);
    wymiar formy: Height=620, Width=720
*/
    a = Point(350,10);
    b = Point(10,600);
    c = Point(700,600);
}
//---------------------------------------------------------------------------

void TForm1::sierp(TPoint A, TPoint B, TPoint C, int licz)
{
    if (licz == 0)
        return;
    --licz;

    TPoint pk[] = { A, B, C, A };
    Form1->Canvas->Pen->Width = 1;
    Form1->Canvas->Pen->Color = clBlack;
    Form1->Canvas->Polyline(pk, 3); // kresli figure od punktu do punktu

    TPoint a, b, c;
    a.x = (B.x - A.x)/2 + A.x;
    a.y = (B.y - A.y)/2 + A.y;
    b.x = (C.x - B.x)/2 + B.x;
    b.y = (C.y - B.y)/2 + B.y;
    c.x = (A.x - C.x)/2 + C.x;
    c.y = (A.y - C.y)/2 + C.y;
    sierp(Point(A.x,A.y), Point(a.x,a.y), Point(c.x,c.y), licz);   // gorny
    sierp(Point(B.x,B.y), Point(b.x,b.y), Point(a.x,a.y), licz);   // lewy
    sierp(Point(C.x,C.y), Point(c.x,c.y), Point(b.x,b.y), licz);   // prawy
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btnSierpClick(TObject *Sender)
{
    sierp(a, b, c, 10);
}
//---------------------------------------------------------------------------

1 użytkowników online, w tym zalogowanych: 0, gości: 1