![]() |
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. |
AW: quadratische funktion umnrechnen für Koordinatensystem
Zitat:
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) |
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:
Die habe ich auch nur durch ein bisschen angucken einiger Codeschnipsel hinbekommen.
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; 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 |
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... |
AW: quadratische funktion umnrechnen für Koordinatensystem
ok, ich werds mal versuchen.
Danke dir! |
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:
Und die bisherige Lösung
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;
Delphi-Quellcode:
Danke schon mal
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; |
AW: quadratische funktion umnrechnen für Koordinatensystem
Danke, hat sich erledigt!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz