import java.awt.*;
import java.applet.*;

public class ParameterKurve extends Applet
{
  Turtle t;
  double xMin = -6.0; // Grenzen des sichtbaren
  double xMax =  6.0; // Koordinatensystems festlegen.
  double yMin = -4.0;
  double yMax =  4.0;

  public void paint(Graphics g)
  { t = new Turtle(this, 100, 150, 0);
    zeichne();   // Aufruf des Hauptprogramms
  }

  void zeichne() // Hauptprogramm
  { t.setzeKOS(xMin, xMax, yMin, yMax);
    zeichneXAchse();
    zeichneYAchse();
    zeichneGraph();
  }  // zeichne  Hauptprogramm
  
  void zeichneXAchse()
  { t.strecke(xMin,0,xMax,0);
    for (double x=xMin; x<=xMax; x = x + 1)
         t.strecke (x, -0.05, x, 0.05);
  }

  void zeichneYAchse()
  { t.strecke(0,yMin,0,yMax);
    for (double y=yMin; y<=yMax; y = y + 1)
         t.strecke (-0.05, y, 0.05, y);
  }

  void zeichneGraph()
  { double pMin = -Math.PI;    // Startwert des Parameters
    double pMax = Math.PI;
    double p = pMin;
    double x = fx(p);
    double y = fy(p);
    double xNeu;
    double yNeu;
    double dp = (pMax - p)/1000;   // Schrittweite des Parameters
    while (p<=pMax)
    { p = p + dp;
      xNeu = fx(p);
      yNeu = fy(p);
      t.strecke(x, y, xNeu, yNeu); // Streckenstueck zeichnen
      x = xNeu;                    // neue Koordinaten sind beim naechsten
      y = yNeu;                    // Durchlauf die alten Koordinaten
    } // end while
  }

  double fx(double t) // Hier wird die X-Koordinate berechnet.
  { double funktionswert;
    funktionswert = 2*Math.cos(t) * (1 + Math.cos(t));
    return funktionswert;
  }

  double fy(double t) // Hier wird die Y-Koordinate berechnet.
  { double funktionswert;
    funktionswert = 2*Math.sin(t) * (1 + Math.cos(t));
    return funktionswert;
  }

} // class KOSystem

