// SINUS.CPP testar klassen Point

#include <graphics.h> // initgraph m.fl
#include <conio.h>    // kbhit, getch
#include <dos.h>      // delay
#include <math.h>     // sin
#include "point.hpp"

void main()
{
  int gdriver=VGA, gmode=VGAHI;
  registerbgidriver(EGAVGA_driver);
  initgraph(&gdriver, &gmode, "");
  setcolor(GREEN);
  rectangle(0,0,639,479);
  outtextxy( 90, 230, "Programmet testar");
  outtextxy( 90, 250, "klassen Point!");
  outtextxy(410, 230, "Tryck p† en tangent");
  outtextxy(410, 250, "f”r att avbryta!");

  {
    int   i=0, x=5;
    const double pi = 3.141;
    const int punkter = 100;
    Point P[punkter];    // Initiera punkterna

    while (!kbhit()) {
      for (; x<=630 && !kbhit(); x=x+5) {
        i++; if (i==punkter) i=0;           // R„kna modulo 10
        double y = 240 + 235*sin(pi*2*x/630);
        P[i].MoveTo(5+x,y);
        delay(10);
      }
      x = x - 10;
      for (; x>=5 && !kbhit(); x=x-5) {
        i++; if (i==punkter) i=0;           // R„kna modulo 10
        double y = 240 + (-235)*sin(pi*2*x/630);
        P[i].MoveTo(5+x,y);
        delay(10);
      }
    }

    while (kbhit())
      getch();          // T”m tangentbordsbuffert

  } // Nu k”rs alla punkternas destruktorer

  closegraph();
}
