/* gcc oscillator-g3.c -lX11 */
#include <stdio.h>
#include <math.h>
#include "glib3.c"

int main() {
  double X1,X2,X3,A,T,Dt;
  glib_open();
  glib_window(-10,-2,60,2);
  glib_line(0,0,100,0,0xffefef);
  glib_line(0,0,0,5,0xffefef);

  /* {{d^2} \over {dt^2}} y + y = \sin(at) */

  X1 = 0.5; X2 = 0.501; A=0.5;

  Dt = 0.07; T = 0;
  while (T<50) {
    X3 = 2*X2-X1+Dt*Dt*(sin(A*T)-X2);
    printf("T=%lf, X1=%lf\n",T,X1);
//    glib_putpixel(T,X1,0xff);
    glib_line(T,X1,T+Dt,X2,0xff);
    T=T+Dt;
    X1=X2; X2=X3;
  }
  glib_flush();
  printf("Type in enter."); getchar();
  return(0);
}








