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
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);
}
//---------------------------------------------------------------------------