Parabel Zeichenen



  • also ich bin gerade dabei eine parabel zu zeichnen. dennoch scheinen mir hier fehler in der berechnung unterlaufen zu sein.

    // maxX minX maxY minY = größe der skalierungsreichweite.
    // ne schränkung damit er nicht ewig zeichnet
    while (( xP < maxX && xP > minX ) || ( yP < maxY && yP > minY))
          {
          float temporaryX, temporaryY;
          if ( Durchlauf == 1 )
             {
             temporaryX = xS;// Scheitelpunkt X
             temporaryY = yS;// Scheitelpunkt Y
             }else
                  {
                  temporaryX = xP; // Errechneter Punkt X
                  temporaryY = yP; // Errechneter Punkt Y
                  }
          xP = Feinheit * Durchlauf; // Feinheit = abstand der punkte, je feiner desto genauer und länger die zeichnung.
          yP =( xP * xP ) * ax; // x² * a 
              pb_Malen->Canvas->MoveTo((pb_Malen->Width/2)+temporaryX+XCorrection,(pb_Malen->Height/2)-temporaryY+YCorrection);
              pb_Malen->Canvas->LineTo((pb_Malen->Width/2)+xP+XCorrection,(pb_Malen->Height/2)-yP+YCorrection);
              pb_Malen->Canvas->MoveTo((pb_Malen->Width/2)-temporaryX+XCorrection,(pb_Malen->Height/2)-temporaryY+YCorrection);
              pb_Malen->Canvas->LineTo((pb_Malen->Width/2)-xP+XCorrection,(pb_Malen->Height/2)-yP+YCorrection);
          Durchlauf += 1;
          }
    

    und das kommt dabei raus.

    http://img.xrmb2.net/images/393699.jpeg

    wie man sieht zieht er nen strich vom eigentlichen scheitelpunkt nach unten zum nullpunkt und macht dann weiter



  • ich schätz mal, bei deiner näherung an den nullpunkt läuft dein float über und lineto schiesst gen himmel.



  • Ich vermute, dass die Formel für Dein Y falsch ist:

    Schurke schrieb:

    yP =( xP * xP ) * ax; // x² * a
    

    Wenn Der Scheitelpunkt bei xS,yS liegt und der quadratische Koeffizient ax ist, so muss die Formel für yP=f(xP) lauten:
    yP = ax * (xP - xS)*(xP - xS) + yS;

    Gruß
    Werner



  • ahh danke danke ^^ 🙂


Anmelden zum Antworten