wtorek, 3 listopada 2015

Serwetka z cykloid, to miła dla oka forma graficzna powstała przez przetwarzanie wzoru matematycznego w pętli - for. Program znalazłem w książce - "C++ Builder. 20 efekektownych programów" - Andrzej Stasiewicza. Jako, że kiedyś częściej chłonąłem produkt Borlanda/Embarcadero, a teraz przesiadłem się na Visual C++, to napisałem kod w środowisku Visual C++ EE 2008. Wystarczyło zrobić kosmetyczne zmiany, wprowadzić zmienne niezbędne do przetwarzania grafiki i niby ruszyło, jednakże nie przeskoczyłem Bulderowej funkcji - RGB, w odpowiedniku MS - FromArgb, gdzie użyłem losowych zmiennych - r,g,b z zakresu -0-255 w postaci jednej funkcji:

int Losowa()
{
int x;
x=rand()%256;
return x;
}
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
srand(time(NULL));
}
private: System::Void Form1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) {

Graphics^ g1=this->CreateGraphics();
System::Drawing::Color kolor;
int x1=Form1::Width/2,y1=Form1::Height/2;
double OMEGA1=1.,il_obieg=1.;
double R1=Form1::Width/2.,R2=Form1::Width/4.;
double t,max_t,x2,y2,x3,y3,x4,y4;
double M_PI=3.14159265359;
max_t=2*M_PI*il_obieg/OMEGA1;
for(t=0;t<max_t;t+=0.03)
{
x2=x1+(R1-R2)*cos(OMEGA1*t);
y2=y1+(R1-R2)*sin(OMEGA1*t);
x3=x2+R2*cos(-OMEGA1*(R1-R2)/R2*t);
y3=y2+R2*sin(-OMEGA1*(R1-R2)/R2*t);
x4=x2-R2*cos(-OMEGA1*(R1-R2)/R2*t);
y4=y2-R2*sin(-OMEGA1*(R1-R2)/R2*t);
kolor=System::Drawing::Color::FromArgb(Losowa(),Losowa(),Losowa());
Pen^ pioro=gcnew Pen(kolor);
g1->DrawLine(pioro,int(x3),int(y3),int(x4),int(y4));
}
}
};
}


Brak komentarzy:

Prześlij komentarz