|
Samodzielnie zaimplementować algorytm rysujący krzywe, nie jest trudno.
Wystarczy skorzystać z najprostszego rozwiązania np biblioteki WinBGI. Po zainstalowaniu pakietu, możemy otworzyć okno graficzne (patrz środkowy listing) :
// plik lo28.c
#include<math.h>
int x_s=320,y_s=240;
//-------------------------------
int calx(double x)
{
return (int)(20*x+x_s);
}
int caly(double y)
{
return (int)(-20.0*y+y_s);
}
void kursor(double x,double y)
{
moveto(calx(x),caly(y));
}
void kreska(double x,double y)
{
lineto(calx(x),caly(y));
}
|
#include <winbgim.h>
#include "lo28.c"
int main()
{
initwindow(640,480);
while(!kbhit());
closegraph();
return 0;
}
|
// deklaracje, funkcje i procedura rysująca
int a=5,b=8,fi_st=0;
double A=8,B=8,fi;
//---------------------------------------
double fx(double t)
{
return A*sin(a*t+fi);
}
double fy(double t)
{
return B*sin(b*t);
}
void rysuj_wykres()
{double dt=0.01;
fi =fi_st * M_PI / 180.00;
kursor(fx(0),fy(0));
setcolor(14);
for(double t=dt;t<=2*M_PI+dt;t+=dt)
kreska(fx(t),fy(t));
}
|
Otrzymujemy okienko graficzne 640x480, gdzie lewy górny róg ma współrzędne (0,0), a prawy dolny (640,480).
Pakiet lo28.c (listing po lewej stronie) dodatkowo organizuje ekran tak, by punkt (0,0) był w środku okienka i by można procedury graficzne adresować we współrzędnych rzeczywistych.
Ostatnia część, to procedura rysująca. Jest bardzo prosta, ale dająca przyzwoity rezultat.
Obok rysunek dla parametrów (A,B,a,b,fi_st)=(8,8,5,8,0).
Interfejs można zrobić raczej ubogi.
Mozesz tu pobrać przykład takiego rozwiązania.
|