Autor Beitrag
-Nala-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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 user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 02.11.2007 um 20:44
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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 user profile iconNarses: BMP in GIF gewandelt.
Einloggen, um Attachments anzusehen!
-Nala- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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:

ausblenden 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:

ausblenden Delphi-Quelltext
1:
I:=sinus(1);					



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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Fr 02.11.07 23:35 
also... ich hab jetzt bei uses math dahingeschrieben und im timer vollgendes geschrieben:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Fr 02.11.07 23:50 
user profile iconJann1k hat folgendes geschrieben:
Du bist in der 10. Klasse und weißt nicht was Sinus und Cosinus ist?

Mir geht's genau so, 10. Klasse und "offiziell" kenn ich die noch nich.

user profile icon-Nala- hat folgendes geschrieben:
also... ich hab jetzt bei uses math dahingeschrieben und im timer vollgendes geschrieben:

ausblenden 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"

Probier mal sin anstatt sinus (und dann auch cos anstatt von cosinus)

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: So 04.11.07 20:39 
Die Fehlermeldung dürfen wir nicht erfahren?

das hier haste doch bestimmt auch gemacht, oder?
user profile iconJann1k hat folgendes geschrieben:
ausblenden 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 133

Win XP
D5
BeitragVerfasst: Mi 07.11.07 19:07 
Hallo,

ausblenden 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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
BeitragVerfasst: Mi 07.11.07 19:38 
user profile iconJann1k 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- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 62



BeitragVerfasst: Mi 07.11.07 19:48 
also ich komm aus Nordrhein-westfahlen...