Autor |
Beitrag |
-Nala-
      
Beiträge: 62
|
Verfasst: Fr 02.11.07 21:41
Hallo!
Ich bin was das Programmieren mit Delphi angeht ziemlich schlecht und brauche eure Hilfe.
Ich soll für die Schule ein Programm schreiben mit dem sich eine ellipse (in einem viereckigen image) im kreis bewegt. Das soll dann später mal sone art veranschaulichung der Planeten die um die Sonne kreisen werden. Das Thema ist gravitation.
Jedenfalls denke ich mal, dass ich da irgendwie pi mit einbeziehen muss aber ich hab keine Ahnung wo oder wie. Ich hab schon einen Timer eingefügt. Nun kann ich die images vertikal oder horizontal bzw. sogar schief bewegen aber so eine richtige kreisform krieg ich nicht hin.
Schon mal jetzt danke für eure antworten!!! Moderiert von Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 02.11.2007 um 20:44
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Fr 02.11.07 21:49
versuchs mal mit sin und cos, damit kriegste leicht ne kreisbahn hin. Pi ist dafür ziemlich fehl am Platze
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Fr 02.11.07 21:56
oke...
könntest du das vielleicht ein bisschen genauer erklären??? Irgendwie hab ich das noch nicht so wirklich verstanden...
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Fr 02.11.07 22:27
Ja, wie groß ist denn dein mathematisches Verständnis?
Ich hab mal ein Bild angehängt.
sin(x) gibt dir das Verhältnis von Hypothenuse zu Gegenkathete, d.h. um die Länge der Gegenkathete zu erhalten rechnest du sin(x)*hypothenuse. Addierst du noch die y-Koordinate des Kreismittelpunktes, hast du schon die y-koordinate des punktes auf der Kreislinie.
Für den X-wert geht das ganze analog nur mit cos(x).
Zu beachten ist das die funktionen sin und cos den x-Wert nicht in Gradmaß(0°-360°) sondern in Radialmaß(0-2Pi) benötigen. Um dir das rechnen mit Radialmaß zu ersparen kannst du mit der Funktion degtorad Gradmaß in Radialmaß umwandeln.
In deinem Timer erhöhst du einfach eine Gradzahl um 1, rechnest mit sin und cos die x und y koordinate auf dem kreispunkt aus und setzt deine ellipse an diese Stelle.
Moderiert von Narses: BMP in GIF gewandelt.
Einloggen, um Attachments anzusehen!
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Fr 02.11.07 22:34
also so ganz hab ichs immer noch nicht verstanden... was ist überhaupt sin und cos und wie bau ich das in meine unit ein??? was für eine gegenkathete... ich bin jetzt in der 10. klasse auf dem gymnasium aber ich hab noch nie sin und cos gehört... wir machen gerade kreisberechnung kann also sein das wir dieses sin und cos bald machen...
EDIT:ok sry ... hatte deine zeichnung noch nicht gesehen.. aber trotzdem irgendwie blick ich da nich durch...
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Fr 02.11.07 22:50
Du bist in der 10. Klasse und weißt nicht was Sinus und Cosinus ist? Von Katheten und Hypothenusen hast du auch noch nichts gehört (nicht mal beim Satz des Pythagoras)? Kann ich mir nur schwer vorstellen, frag mal nen Mathe-As aus deiner Klasse.
€: Um sin und cos einzubauen binde die unit math ein (oben unter uses)
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Fr 02.11.07 22:59
klar... von hypotenuse und kathete hab ich natürlich schon was gehört aber von sin und cos noch nicht... kannst du vielleicht einfach mal diese einbindung von sin und cos programmieren und die unit hier darstellen ??? das würde mir echt weiterhelfen..
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Fr 02.11.07 23:17
Zitat: | kannst du vielleicht einfach mal diese einbindung von sin und cos programmieren und die unit hier darstellen |
Klar kann ich, aber was lernst du dabei?
Zitat: | das würde mir echt weiterhelfen.. |
das hier bestimmt auch:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| unit Unit1;
interface
uses math; |
und tada in deinem quelltext kannst du dann einfach an irgendeiner (!!!) Stelle zB das hier benutzen:
Delphi-Quelltext
Und wenn du wirklich keine Ahnung von der Sinus bzw. Cosinus Funktion hast, dann
1. frag deinen lehrer was da falsch läuft
2. lies dir den Wikipedia Artikel dazu durch (vllt bringt der was)
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Fr 02.11.07 23:35
also... ich hab jetzt bei uses math dahingeschrieben und im timer vollgendes geschrieben:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Timer1Timer(Sender: TObject); var I, top:real; begin I:=image1.top; top:=sinus(I); image1.top:=image1.Top+I; end; |
daraufhin erscheint die fehlermeldung : undefinierter begriff "sinus"
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Fr 02.11.07 23:50
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Jann1k
      
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: Sa 03.11.07 00:22
Zitat: |
Mir geht's genau so, 10. Klasse und "offiziell" kenn ich die noch nich. |
´
Dann hat man den Lehrplan aber gewaltig umgestellt, als ich in der 10 war (omg 3 Jahre her ^^) war das schon bekannt meine das gabs in der neun.
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: So 04.11.07 20:18
also.. ich hab jeztzt die gleiche unit geschrieben nur halt mit sin anstatt sinus und es funktioniert immer noch nicht ...
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: So 04.11.07 20:39
Die Fehlermeldung dürfen wir nicht erfahren?
das hier haste doch bestimmt auch gemacht, oder?
Jann1k hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| unit Unit1;
interface
uses math; | |
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Mi 07.11.07 17:48
also... ich hab alles gemacht was ihr mir gesagt habt aber trotzdem zeigt er mich noch eine Fehlermeldung an.. da heißt es incompatible types: integer and extended
hier ist die unit
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Timer1Timer(Sender: TObject); var a,b:real; begin a:=+50; b:=-50;
Erde.top:=Erde.top+sin(a); Erde.Left:=Erde.left+sin(b); end; |
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mi 07.11.07 17:53
Das liegt daran, dass sin und cos eine Kommazahl zurückgeben. Und da es nun mal keine halben Pixel gibt, passt das leider nicht ganz.
Als Lösung kannst du dir eine von diesen Funktionen aussuchen: round, trunc, ceil, floor
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Mi 07.11.07 18:03
aha... und wie muss ich diese funktion einbinden??? also wo soll ich sie hinschreiben oder finde ich das bei den eigenschaften/ereignissen??
|
|
blaueled
      
Beiträge: 133
Win XP
D5
|
Verfasst: Mi 07.11.07 19:07
Hallo,
Delphi-Quelltext 1:
| Erde.top:=Erde.top+trunc(sin(a)); |
Du musst den rückgabewert der sin Funktion in einen integer umwandeln.
In diesem fall (trunc) werden einfach die nachkommastellen "abgeschnitten",
um zu runden nimm round().
BlaueLED
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Mi 07.11.07 19:22
also.. wenigstens zeigt er mir jetzt keine fehlermeldung mehr an ... allerdings bewegt sich das image nur nach rechts... wisst ihr warum und wie man das problem behebt???
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Mi 07.11.07 19:38
Jann1k hat folgendes geschrieben: | Zitat: |
Mir geht's genau so, 10. Klasse und "offiziell" kenn ich die noch nich. | ´
Dann hat man den Lehrplan aber gewaltig umgestellt, als ich in der 10 war (omg 3 Jahre her ^^) war das schon bekannt meine das gabs in der neun. |
Ich weiß zwar nich aus welchem BuLand du kommst, aber bei mir in BaWü wurde erst in der 10. Klasse vor den ZKs die Trigonometrie behandelt ...
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
-Nala- 
      
Beiträge: 62
|
Verfasst: Mi 07.11.07 19:48
also ich komm aus Nordrhein-westfahlen...
|
|