![]() |
Kreisbahn um Objekt
Guten morgen....
ich hab mal wieder ein Problem: Ich möchte eine Kreisbahn darstellen. Diese Kreisbahn soll in einer Procedure stehen und um ein Objekt liegen...(die Sonne). Ich hatte schon mal angefangen nur irgendwie fehlt mir etwas, damit es auch eine Kreisbahn wird:
Delphi-Quellcode:
Delphi stellt immer ein Strich dar und keine Kreisbahn. X soll den Wert 240 und Y 120 sein. Das sind die einzigen Vorgaben.
procedure erdbahn(x,y: integer);
var i: integer; wi: real; begin for i:=1 to 180 do begin wi:=pi/180; x:=round(i*cos(wi)); y:=round(i*sin(wi)); form1.Canvas.Pixels[x,y]:=clgreen; end; end; Danke im Voraus für eure Hilfe. [edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit] |
1. Irgendwie fehlt in den Formeln ein Radius, oder?
2. wi ist immer das Gleiche (daher wohl auch der Strich) und außerdem noch in Grad. sin und cos erwarten einen rad-Wert. MfG, Peter |
und was müsste ich da jetzt verändern??
|
So sollte es gehen:
Delphi-Quellcode:
x0 und y0 sind dabei der Mittelpunkt der Kreisbahn und r der Radius. Der Rest sollte klar sein.
procedure erdbahn(x0,y0,r: integer);
var grad,x,y: integer; phi: real; begin for grad:=0 to 359 do begin phi:=180/Pi*grad; x:=round(r*cos(phi))+x0; y:=round(r*sin(phi))+y0; form1.Canvas.Pixels[x,y]:=clgreen; end; end; MfG, Peter //Edit: Du könntest vielleicht noch einen Parameter "Canvas" einführen, bei dem Du angibst, wo Du zeichen möchtest. Dann wäre es nicht auf Form1.Canvas beschränkt. |
danke für die hilfe....jedoch soll es in form1 gezeichnet werden
|
Mir ist noch was eingefallen: Du solltest Dir überlegen, ob Du "grad" nicht als Realwert deklarierst und in einer while-Schleife in kleineren Schritten erhöhst. Eine Genauigkeit von 1° (wie sie ja jetzt da steht) wird bei größeren Kreisen keine durchgezogene Linie mehr ergeben!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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