Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   quadratische funktion umnrechnen für Koordinatensystem (https://www.delphipraxis.net/163622-quadratische-funktion-umnrechnen-fuer-koordinatensystem.html)

Blubbel 7. Okt 2011 09:20

Delphi-Version: 5

quadratische funktion umnrechnen für Koordinatensystem
 
Moinsen ;)
Ich habe hier ein kleines Problemchen, und zwar will ich in einem Image feld , das eine canvas ist, in einen Graphen eine Parabel zeichnen. Ich weiß nicht genau wie ich es Rechnen muss, um meine funktion anzupassen....

Habt ihr vielleicht einen Pseudocode für mich, mit kommentaren damit ichs besser versteh?

Danke euch jetzt schon.

Sir Rufo 7. Okt 2011 09:53

AW: quadratische funktion umnrechnen für Koordinatensystem
 
Zitat:

Zitat von Blubbel (Beitrag 1129034)
in einem Image feld , das eine canvas ist, in einen Graphen eine Parabel zeichnen.

wohin denn jetzt? :gruebel:

Image oder Canvas?
BTW: Jedes sichtbare Element hat eine Canvas (Leinwand), sonst könnte es nicht sichtbar werden.
Eine Image-Komponente malt das ihr zugewiesene Bild auf ihren Canvas ;)

Oder vielleicht besser doch eine PaintBox (die scheint mir für dein Vorhaben wohl besser geeignet)

Blubbel 7. Okt 2011 10:00

AW: quadratische funktion umnrechnen für Koordinatensystem
 
Also mit einer Paintbox hab ichs vorher versucht... hat nicht so hingehauen wie ich es gerne haben wollte. deswegen habe ich ein image genommen.

Ich zeig dir einfach mal den code der Oberfläche.

Brauche eben noch eine einfache Rechenmethode um die funktion passend errechnen zu lassen damit der graph auch richtig gezeichnet wird. Nur einen Pseudocode mit kommentaren damit ichs dann adarauf aufbauen kann... also nur zum gucken wie man sowas macht. Keine angst ich werds nicht 1 zu 1 übernehmen :wink:
Also hier erstmal der Code von der Oberfläche:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i,j,k:Integer;
begin
  with Image1.Canvas do
  begin  //X-Achse
    MoveTo(1125,450); //Graph
    LineTo(20,450);

    for i:= -5 to 16 do
    begin
      Image1.Canvas.TextOut(300+50*i,455,IntToStr(i)); //Beschriftung
      MoveTo(300+50*i,445);  //Striche von Beschriftung
      LineTo(300+50*i,455);
      begin  //Y-Achse
        MoveTo(300,20); //Graph
        LineTo(300,660);

        for j := -8 to -1 do
        begin
          Image1.Canvas.TextOut(305,450+50*j,IntToStr(-j)); //Beschriftung
          MoveTo(295,450+50*j); //Striche von Beschriftung
          LineTo(305,450+50*j);

          for k := 1 to 4 do
          begin
            Image1.Canvas.TextOut(305,450+50*k,IntToStr(-k)); //Beschriftung
            MoveTo(295,450+50*k); //Striche von Beschriftung
            LineTo(305,450+50*k);
          end;
        end;
      end;
    end;
  end;
end;
Die habe ich auch nur durch ein bisschen angucken einiger Codeschnipsel hinbekommen.

Also das zeichnen soll übrigens in einem Button sein wobei auch der wert von X² in einem Edith eingegeben wird... also vielleicht werde ich das später noch erweitern

Noobmaster 7. Okt 2011 10:39

AW: quadratische funktion umnrechnen für Koordinatensystem
 
Setze dort Punkte, wo deine Parabel entlangläuft:

Delphi-Quellcode:
Canvas.Moveto(Parabel(LinkeBegrenzung));
for x := LinkeBegrenzung_X to RechteBegrenzung_X do
begin
   Canvas.LineTo(Parabel(x));
   Canvas.MoveTo(Parabel(x));
end;
;

Deine Parabelfunktion sollte dann logischerweise so implementiert werden, dass die Parabel in der Mitte der Canvas ihren Scheitelpunkt hat:
y = a(x-xs)+ys
xs muss dann die Hälfte der Breite deiner Canvas sein.

Ich hoffe, ich habe jetzt auf die Schnelle keinen groben Denkfehler drin. Aber vom Prinzip her müsste es so funktionieren...

Blubbel 7. Okt 2011 10:45

AW: quadratische funktion umnrechnen für Koordinatensystem
 
ok, ich werds mal versuchen.

Danke dir!

Blubbel 14. Okt 2011 14:19

AW: quadratische funktion umnrechnen für Koordinatensystem
 
Hi Leute,
ich nehme wieder meinen alten thread auf weil ich das gleiche problem wieder habe...
Keine angst! wie haben eine erweiterungsaufgabe bekomm. Das Koordinatensystem soll sich, wenn der Anwander das -fenster vergrößert, auch vergrößern. Alles schön und gut! nur weiß ich jetzt nicht wie ich Zeichnen kann. Habe es soweit, dass es zeichnet aber nicht so wie es sollte^^

Die Funktionen

Delphi-Quellcode:
function GetCenter(AValue: TRect): TPoint;
  begin
    Result.X := (GetWidth(AValue) div 2);
    Result.Y := (GetHeight(AValue) div 2);
  end;
function GetWidth(AValue: TRect): Integer;
  begin
    Result:= (AValue.Right - AValue.Left);
  end;

  function GetHeight(AValue: TRect): Integer;
  begin
    Result:= (AValue.Bottom - AValue.Top);
  end;
Und die bisherige Lösung
Delphi-Quellcode:
procedure TForm1.btn_ZeichneClick(Sender: TObject);
var
  i,j, k:Integer;
  x,y: Real;
begin
  a:= StrToFloat(edtEingabe.Text);
  b:= StrToFloat(edt_Bx.Text);
  c:= StrToFloat(edt_C.Text);
  i:=0;

  for i := 0 to GetWidth(PaintBox1.Canvas.ClipRect) do
  begin
    x:=(i-GetHeight(PaintBox1.Canvas.ClipRect)) / 50;
    y:=a*sqr(x)+b*x+c;
    j:=round(GetHeight(PaintBox1.Canvas.ClipRect) - y * 50);
    PaintBox1.Canvas.Pixels[i,j]:=clblue; //zeichnen
  end;
end;
Danke schon mal

Blubbel 14. Okt 2011 14:49

AW: quadratische funktion umnrechnen für Koordinatensystem
 
Danke, hat sich erledigt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz