Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Spirolaterkurve (https://www.delphipraxis.net/101077-spirolaterkurve.html)

TeddyPicker 8. Okt 2007 08:47


Spirolaterkurve
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist der Quelltext und Formular zur Aufgabe und ich komme einfach nicht weiter habe echt schon alles ausprobiert und frage deshalb ob mir jemand helfen kann...(ich hoffe es wird angezeigt )

Luckie 8. Okt 2007 08:54

Re: Spirolaterkurve
 
Bei konkreten Problem helfen wir gerne. Es wird dir hier aber keine deine Hausaufgaben machen. Und so wie du hier dein Posting eingestellt hast, wird die Bereitschaft dir zu helfen gleich null sein. Also setz dich noch mal hin und überleg, wo du nicht weiterkommst, dann stell uns etwas Quelltext von der betreffenden Stelle zur Verfügung und wir können dir eventuell helfen.

TeddyPicker 8. Okt 2007 08:57

Re: Spirolaterkurve
 
hier ist der quelltext ..und ich wurd nicht fragen wenn ich nicht echt schon alles probiert habe denn sonst könnt ich auch allein ...es ist auch keine hausaufgabe (ich weiß das das hier kein hausaufgaben forum ist)..ich dachte man kann mir hier helfen eine lösung für das problem zu finden

Delphi-Quellcode:
unit Unit1;


var
  Form1: TForm1;

implementation

{$R *.dfm}
function f(x:real):real;
begin f:=(((x-4)*x-2)*x+4)*x+5
end;

procedure TForm1.Imageleeren;
begin
  image1.Canvas.Brush.Color:=clWhite;
  image1.Canvas.Pen.Color:=clWhite;
  image1.Canvas.Rectangle(0,0,image1.Width,image1.Height);
  image1.Canvas.Pen.Color:=clBlack;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Imageleeren;
  SpinEditx.Value:=image1.Width div 3;
  SpinEdity.Value:=image1.Height div 2;
end;

procedure TForm1.ButtonZeichnenClick(Sender: TObject);

//var
//x,y:real;
//xs:integer;

begin
 //for xs:=0 to xsMax do begin
//x:= xmin + xs;
//y:=f(x);
//ys:= round ((yMax-y)* yMF);


//end;
//write;readln
end ;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  SpinEditx.Value:=x;
  SpinEdity.Value:=y;
  ButtonZeichnenClick(self);
end;

end.
[edit=Luckie]Delphi-Codetags eingefügt. Beim nächsten mal bitte selber machen. Mfg, Luckie[/edit]

Luckie 8. Okt 2007 09:07

Re: Spirolaterkurve
 
Wir wissen immer noch nicht, was dein Problem ist. Bisher sagst du uns nicht mehr, wie "Geht nicht." Was sollen wir damit anfangen?

TeddyPicker 8. Okt 2007 09:12

Re: Spirolaterkurve
 
um es genau zu sagen sollen das programm kurven zeichnen und ich soll mir dazu ein programm ausdenken dazu und ich hab schon in nbüchern dazu nachgelen komm aber trotzdem nicht weiter --> also kann ich dir nicht genau sagen was mein problem ist

Phoenix 8. Okt 2007 09:23

Re: Spirolaterkurve
 
Gut.

Jetzt stell Dir mal vor, Du würdest diese Kurven von Hand auf einem Blatt Papier zeichnen müssen.
Wie würdest Du da vorgehen?

Du würdest im einfachsten Ansatz zu jedem x-Wert den korrespondierenden y-Wert ausrechnen, diese Punkte in ein Koordinatensystem einzeichnen und diese Punkte dann alá Malen nach Zahlen verbinden.

Das Koordinatensystem liefert Dir das Pixelsystem Deines Bildschirms. Hier musst Du nur aufpassen: X wird wie bekannt nach rechts aufgetragen, der Y-Wert 0 ist aber oben und wird größer, je weiter Du nach unten gehst. Also musst Du Deinen ausgerechneten Y-Wert von der gesamthöhe der Zeichenfläche abziehen, um die Kurve nicht gespiegelt zu zeichnen.

Je nachdem, wie groß Du das Zeichnen willst, musst Du eine entsprechende Skalierung wählen. Für jedes Pixel einen Wert zu nehmen dürfte nicht ansehnlich sein. Du könntest also z.B. 10 Pixel für einen Wert wählen, und rechnest dann in Zehntelschritten, also 0,1 ; 0,2 ; ... 0,9 ; 1,0. Das Ergebnis rundest Du auf eine Nachkommastelle. Dann das ganze mal 10 und Du hast Deine Wert -> Koordinaten Zuordnung.

Und wenn Du das dann von xMin bis xMax ausgerechnet hast (Stichwort zur Speicherung der Ergebnisse: Array), dann brauchst Du nur noch jeden Wert daraus als Pixel zu zeichnen und Du hast die Aufgabe gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 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