Announcement

Collapse
No announcement yet.

Graphen (Kurve) zeichnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Graphen (Kurve) zeichnen

    Hallo,<br>
    wie kann man am besten einen Graphen zeichnen? Er soll unter verschiedenen Auflösungen gleich aussehen.
    <br><br>
    Außerdem möchte ich als Graph eine Kurve zeichnen und nicht von Punkt zu Punkt eine Linie zeichnen. Ich habe es mal mit Splines versucht, doch ich verstehe es nicht (kennt jemand ein Beispiel).
    <br><br>
    Hat irgend jemand eine Idee dazu?<br>
    Gruß Alex

  • #2
    Hi,
    <br>
    <br>"wie kann man am besten einen Graphen zeichnen? Er soll unter verschiedenen Auflösungen gleich aussehen"
    Eine Möglichkeit wäre die Einheit in Abhängigkeit von maxx und maxy zu machen:
    <br>eine Einheit entspricht dann 10% von getmaxx
    <br>
    <br>"Außerdem möchte ich als Graph eine Kurve zeichnen und nicht von Punkt zu Punkt eine Linie zeichnen. Ich habe es mal mit Splines versucht, doch ich verstehe es nicht (kennt jemand ein Beispiel)."
    Keine Linien zeichnen sondern Punkte. Wenn die Punkte zu weit auseinander stehen, muß die Schrittweite verkleinert werden.
    <br>Bsp.:
    <br>f(x) = x^2
    <br>mit einer Schritt weite von deltaX = 0.05 ist ungenauer wie eine Schrittweite mit deltaX= 0.005
    <br>
    <br>Bsp.: (aus den guten alten BP Zeiten)
    <br>
    <br>//zeichnet Koordinatensystem
    <br>Procedure KoordinatenSyS;
    <br>Begin
    <br> XAbstand := 40;
    <br> Line(0, GetmaxY Div 2, getmaxx, getmaxy div 2 );
    <br> Line(GetmaxX Div 2, 0, getmaxx Div 2, getmaxy );
    <br> For I := 1 to getmaxX Div Round( XAbstand ) Do
    <br> Begin
    <br> Line( Round( I * XAbstand - 1 ), GetmaxY div 2 - 3, Round( I * XAbstand - 1 ), GetmaxY div 2 + 3 );
    <br> Line( GetmaxX div 2 - 3, Round( I * XAbstand - 1 ), GetmaxX div 2 + 3, Round( I * XAbstand - 1 ) );
    <br> End;
    <br>End;
    <br>
    <br>//zeichnet Funktion
    <br>Procedure SchnabelSpitzParabel;
    <br>Var
    <br> T, X, Y, DT : Real;
    <br>Begin
    <br> DT := 0.0005;
    <br> T := -5;
    <br>{ WriteLn( LST, ' X ³ Y ³ T ' );}
    <br> Repeat
    <br> X := SQR( T );
    <br> Y := SQR( SQR( T ) ) + ( 1 / 2 * SQR( SQR( T ) ) * T );
    <br> PutPixel( ( GetMaxx Div 2 ) + Round( XAbstand * X ),
    ( GetMaxY Div 2 ) - Round( XAbstand * Y ), 15 );
    <br> T := T + DT;
    <br> Until T >= 5;
    <br>End;
    <br>
    <br>mfg
    <br>p

    Comment


    • #3
      Hallo,<br>danke für die Hilfe, aber ganz so einfach ist es dann doch nicht. Mein Problem ist, dass ich die Schrittweite nicht verändern kann, da ich nur einzelne Wertepaare habe und keine Funktion. Somit muss ich die Abschnitte zwischen den Punkten irgendwie verbinden bzw. eine Funktion ermitteln, die mir dann die restlichen Punkte liefert.
      Aus diesem Grund wollte ich mit Hilfe von Teilpolynomen den Verlauf festlegen.<br><br>
      Gruß Ale

      Comment


      • #4
        Hallo!

        Nachdem ich Dein Problem gelesen habe, habe ich mich mal mit meinen alten Matheunterlagen aus meinem Studium auseinandergesetzt. Dar Lösungsansatz mit den Cubischen-Splines ist schon richtig.
        Es muß für jedes aufeinanderfolgende Punktepaar eine Funktion berechnet werden, mit der man dann die Zwischenpunkte des Punktepaares berechnen kann. Somit bekommt man n-1 Funktionen (n=Anzahl der Punkte).
        Ich habe damals in Basic ein Programm geschrieben, um die Funktionen zu berechnen.
        Wenn Du mir Deine Email-Adresse oder deine Fax-Nummer mails, sende ich Dir das Listing und Unterlagen zu.
        Wenn Du etwas Zeit mit der Lösung hast (ca. 1-2 Wochen), kann ich mich mal ransetzen, um eine Delphi-Funktion zu schreiben, die aus vorgegebenen Punkten, eine vorgegebene Zahl von Zwischenpunkten ausgibt.

        Mfg
        rasmu

        Comment


        • #5
          Hallo.
          Ich noch mal.

          Ohne Adresse keine Mail.
          Meine EMailadresse lautet:

          [email protected]

          Gruß
          rasmu

          Comment


          • #6
            Hallo,<br>
            ich habe die Mailantwort erhalten und werde mal eine Funktion zusammenbauen.<br><br>
            Vielen Dan

            Comment


            • #7
              Hallo!

              Ich habe die Unit fertig.
              Wenn interesse besteht, auf meiner Homepage kann sie abgerufen werden.

              http://rasmus.weigel.bei.t-online.de

              gruss
              rasmu

              Comment

              Working...
              X