Einzelnen Beitrag anzeigen

Preddy2005

Registriert seit: 27. Nov 2005
Ort: Mettmann
38 Beiträge
 
#1

Hilfe bei Plotter und Umrechnung der Koordinaten

  Alt 3. Feb 2006, 19:22
Hallo mal wieder! Ich brauche mal Hilfe bei der Programmierung eines Plotters und der Funktion Sin(x).

Ist eine Schulaufgabe... Die Umsetzung mit Delphi bereit mir nicht die Probleme ... Eher die Theorie dahinter... Und ich habe nichts wirklich brauchbares gefunden in Foren und im Internet ... Vielleicht kann mir hier ja jemand helfen... Und unser Lehrer erklärt leider auch kaum was... Deswegen wende ich mich an euch.

Delphi-Quellcode:

var Anzahl_n : Integer;
    i, j, k, l, m : Integer;
    Schritt : Double;
    Y_Max_Wert : Extended;
    X_Max_Wert : Extended;
    Y_Min_Wert : Extended;
    X_Min_Wert : Extended;
    Y_Max_Min : Extended;
    X_Max_Min : Extended;
    Y_Temp_Max : Extended;
    X_Temp_Max : Extended;
    Y_Temp_Min : Extended;
    X_Temp_Min : Extended;
    Y_Null_Punkt : Extended;
    X_Null_Punkt : Extended;

begin

     Y_Max_Wert := 0;
     Y_Min_Wert := 0;
     X_Max_Wert := 0;
     X_Min_Wert := 0;

     Anzahl_n := StrToInt((edtAnzahln.Text));
     Schritt := StrToFloat(edtSchritt.Text);

       { Schritt 1 : Wertetabelle erstellen für die Berechnung
         X aus den Schritten und Y wird aus Sin(x) errechntet }


     for i:= 0 to Anzahl_n do
      begin

       X_Werte_Array[i+1] := X_Werte_Array[i] + Schritt;
       Y_Werte_Array[i+1] := Sin(X_Werte_Array[i]);

       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('Wert von X : ' + FloatToStr(X_Werte_Array[i]));
       memAusgabe.Lines.Add('Sin von X : ' + FloatToStr(Y_Werte_Array[i]));
       memAusgabe.Lines.Add('');

      end;

      // Schritt 2 : Min und Max von Y bestimmen

                // Max Y

       for k:= 0 to Anzahl_n do
        begin

         Y_Temp_Max := Y_Werte_Array[k];
          if (Y_Temp_Max > Y_Max_Wert)
           then Y_Max_Wert := Y_Temp_Max;

        end;

                // Min Y

        for j := 0 to Anzahl_n do
         begin

          Y_Temp_Min := Y_Werte_Array[j];
           if (Y_Temp_Min < Y_Min_Wert)
            then Y_Min_Wert := Y_Temp_Min;

         end;

                    // Max X

           for l := 0 to Anzahl_n do
            begin
             X_Temp_Max := X_Werte_Array[l];
              if (X_Temp_Max > X_Max_Wert)
               then X_Max_Wert := X_Temp_Max;
             end;

                       // Min X

           for m := 0 to Anzahl_n do
            begin
             X_Temp_Min := X_Werte_Array[m];
              if (X_Temp_Min < X_Min_Wert)
               then X_Min_Wert := X_Temp_Min;
             end;

       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('Y Max-Wert : ' + FloatToStr(Y_Max_Wert));
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('Y Min-Wert : ' + FloatToStr(Y_Min_Wert));
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('X Min-Wert : ' + FloatToStr(X_Min_Wert));
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('X Max-Wert : ' + FloatToStr(X_Max_Wert));
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('************************************************');

       // Schritt 3 : Nullpunktverschiebung durch Subtraktion des Min - Wertes

       Y_Null_Punkt := Y_Min_Wert - Y_Min_Wert;
       X_Null_Punkt := X_Min_Wert - X_Min_Wert;

       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('Y - Nullpunkt nach Verschiebung: ' + FloatToStr(Y_Null_Punkt));
       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('X - Nullpunkt nach Verschiebung: ' + FloatToStr(X_Null_Punkt));
       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('************************************************');

       // Schritt 4 : Max - Min berechnen

       X_Max_Min := X_Max_Wert - X_Min_Wert;
       Y_Max_Min := Y_Max_Wert - Y_Min_Wert;
       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('X Max/Min Wert: ' + FloatToStr(X_Max_Min));
       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('Y Max/Min Wert: ' + FloatToStr(Y_Max_Min));
       memAusgabe.Lines.Add('');
       memAusgabe.Lines.Add('************************************************');
       memAusgabe.Lines.Add('************************************************');

       // Schritt 5 : h (bzw. b) (Max - Min) errechnen

       System_Breite := imSystem.Width;
       System_Hoehe := imSystem.Height;

       // Schritt 6 : h - Y Wert



       // Schritt 7 : Runden

       

end;

1.) Ist dieser Ansatz korrekt?

2.) Die Stichpunkte helfen mir nicht von meinem Lehrer. Kann jemand mal erklären wie ich theoretisch weitermachen muss...
Die Theorie dahinter zu verstehen wäre mir wichtiger als der Rest... Mathe ist zumdem schon ein Weilchen her und deshalb
beherrsche ich das alles auch nicht wirklich gut...

Ich hoffe jemand kann mir weiterhelfen.... Danke im voraus für die Mühe und den Aufwand.
  Mit Zitat antworten Zitat