Krzywe Lissajous
Janusz Sobieraj - 28 LO

Krzywe Lissajous w Dev-C++ (WinBGI)

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.