Winkel berechnen aus Strecke und Senkrechte

Neue Frage »

dodo2998 Auf diesen Beitrag antworten »
Winkel berechnen aus Strecke und Senkrechte
Vorab:
Ich brauch die Lösung für ein Spiel, das ich zurzeit programmiere(verdammte Grafik)
Ich habe ein kartesisches Koordinatensystem.
In dem ist eine Liste von Punkten,
und dann hat der Spieler auch eine Koordinate.
Damit ich berechnen kann wo auf dem Bildschirm der Stein erscheint,
muss ich den Winkel zwischen der Strecke zwischen Spieler und dem derzeitigem Stein und der Senkrechten im Koordinatensystem berechnen.
Ich hab schon Formeln gefunden, aber am Ende hat es immer nicht funktioniert, und die Steine von hinten sind vorne mit zu sehen und hinten ist nix.
Also muss die Formel 360° abdecken.
Damit nicht gefragt wird: der Winkel im Uhrzeigersinn bitte(also mathematisch negativ)

Danke im Voraus für die Hilfe,

dodo2998

Meine Ideen für die Lösung:
ich habe keine Ahnung, programmieren kann ich seit der 2. Klasse mit Python und Pygame, aber bin jetzt erst 8. Klasse. Da haben wir nicht mal sinus & cosinus schon gehabt...
dodo2998 Auf diesen Beitrag antworten »
RE: Winkel berechnen aus Strecke und Senkrechte
Ich habe mir den Workshop mit Matrizen durchgelesen, und den mit Vektoren.
Also liegt mein Lösungsansatz hier: Vektoren. Vektoren werden ja durch x Werte bei einer xdimensionalen Darstellung definiert, aber da sie Richtungen darstellen könnte man sie ja durch Winkel und Länge auch eindeutig definieren(x-1 Winkel und die Länge bei xdimensionaler Darstellung). Länge habe ich, die geht über ein rechtwinkliges Dreieck. Und es ist 2dimensional, also benötige ich nur einen Winkel(mir reicht schon ein Lösungsansatz für eine 360°-abdeckende Formel mit mathematisch positiven(gegen den Uhrzeigersinn) Winkel von der Horizontalen Augenzwinkern )
 
 
alterHund Auf diesen Beitrag antworten »

da wirst Du
( python )
math.atan2(xDifferenz,yDifferenz)
brauchen,
dann bekomst Du einen Winkel im Bogenmaß, wenn Du's in ° brauchst berechnen

Wenn der Spieler links von Stein ist ist die xDifferenz positiv,
wenn der Stein über dem Spieler ist ist die yDifferenz positiv
dodo2998 Auf diesen Beitrag antworten »

Danke!
In Grad(ja brauch ich) kann ich aber auch mit math.degrees() umrechnen.

Nur damit ichs richtig verstehe: Ist die Formel so richtig?
math.degrees(math.atan2(stonex-playerx,stoney-playery))
(die Sache mit den Vektoren scheint kein schlechter Ansatz gewesen zu sein)

Aber eine Frage habe ich noch: von wo geht der Winkel los und ist er math. positiv oder negativ?

Und es interessiert mich, ob atan2 für vektoren gedacht ist...
alterHund Auf diesen Beitrag antworten »

momemnt mal
sehe gerade es ist math.atan2( yDifferenz, xDifferenz)
ist
richtig wenn "oben" positive yRichtung, "rechts" poxitive xRichtung
alterHund Auf diesen Beitrag antworten »

los geht der Winkel "rechts in der Waagrechten", eben mathematisch, im Gegenuhrzeigersinn
alterHund Auf diesen Beitrag antworten »

Bild
dodo2998 Auf diesen Beitrag antworten »

Zitat:
Original von alterHund
momemnt mal
sehe gerade es ist math.atan2( yDifferenz, xDifferenz)
ist
richtig wenn "oben" positive yRichtung, "rechts" poxitive xRichtung

Was ist "oben"/"rechts" von was???? ich schätze mal du meinst die Steine im Vergleich zum Spieler und nicht anders herum...
alterHund Auf diesen Beitrag antworten »

ja, Stein rechts vom Spieler --> Positive xDifferenz
dodo2998 Auf diesen Beitrag antworten »

Danke Gott
also...

math.degrees(math.atan2(stoney-playery,stonex-playerx))

die beiden Argumente(x und y) einfach nur vertauscht verwirrt

Danke für die Hilfe!!
Jetzt wird mein Spiel endlich fertig!!! Freude
alterHund Auf diesen Beitrag antworten »

ja. Viel Erfolg und Spaß! smile
alterHund Auf diesen Beitrag antworten »

N.S.: es könnte natürlich sein, daß auf dem Bildschirm die Y-Werte von oben nach unten steigen -
dann müßtest Du für die yDifferenz das Vorzeichen umkehren.
dodo2998 Auf diesen Beitrag antworten »

Mein Spiel ist fertig!!
Für das Spiel braucht man die neueste Version von pygame.

Leider hat mein Programm mit dem ich .zip's erstelle ein Problem mit Musik...

Deshalb braucht man in dem Ordner, in dem man die beiden Zips entpackt auch zwei Musikdateien: eine music.mp3 und eine sea.mp3 .
Das Spiel ist ein wenig komisch bei den Zielen(Inseln), auf die man fahren muss: manchmal werden Steine davor angezeigt die eigentlich dahinter sind.
Mit der Maus dreht man das Schiff, mit Pfeiltaste hoch gibt man Gas, und mit Pfeiltaste runter bremst man.

Das ist übrigens ein Spiel, dass ich innerhalb eines Tages programmiert hat(heute habe ich nur noch ein paar Bugfixes gemacht)

Ich könnte ja vielleicht alterHund mit in die Credits schreiben...

Jeder darf das Spiel so verwenden wie er möchte, schreibt sich aber bitte selbst mit in die Credits, wenn er was verändert hat. Ich übernehme keine Haftung(bin sowieso minderjährig) für jegliche veränderte Inhalte. Es ist kein Copyright drauf, falls es euch interessiert.

Wichtig: Das ist die 1.0!
Ich werde später noch Möwenkacke und andere Inhalte hinzufügen.
Ab der 2.0 gibts nen Highscore.
sucht einfach nach "John Maynard Spiel dodo2998" und ihr könnt vielleicht meine Webseite finden("vielleicht", weil sie noch nicht online ist)
alterHund Auf diesen Beitrag antworten »

Hallo dodo2998

da Du ja wohl willst daß "das Puplikum" das Spiel spielt, solltest Du, für Leute, die nicht mit Python
vertraut sind,
beschreiben wie man aus den beiden ZipFiles ein lauffähiges Proramm macht und wie man es startet.

Vielleicht möchtest Du auch Kommentare zum Code - davon bekämst Du vermutlich mehr,
wenn Du Dich an das Informatik Forum wendest.

Ich habe kurz die "JohnMaynadrd.pyw" überflogen und
in
Zeile 376
... sin( ... + 90) wäre einfacher cos( ... )
Zeile 377
...cos(... + 90) wäre einfacher -sin( ... )

Alle Achtung für soeine Eintagesarbeit!
dodo2998 Auf diesen Beitrag antworten »

Danke!

Also wie man es lauffähig macht: Beide Archive im selben Ordner entpacken, und schon ist es installiert. Um das Spiel zu starten einfach "JohnMaynard" doppelklicken.
Wenn es nicht funktioniert:
Hast du Python installiert? Wenn nicht installiere dir die neueste Version, mit der pygame etwas anfangen kann.
Hast du Pygame installiert? Wenn nicht installiere dir die neueste Version.

Python kannst du unter www#python#org downloaden,
pygame kannst du unter www#pygame .org downloaden, und unter pygame#org bekommst du auch unter der Downloadseite die Information, welche die neueste unterstützte Python-Version ist.
Neue Versionen gibt es unter www#dodo2998#bplaced#com .

Ich habe übrigens einen Bug entdeckt. An den Inseln sieht man ihn gut Augenzwinkern .
Die sort() Methode funktioniert nicht so herum, wie ich gedacht habe, sprich: Objekte die weiter vorne sind, werden als letztes gerendert und von den hinten überdeckt. Es wird wohl bald eine 1. 1 folgen müssen...

# steht für einen Punkt
alterHund Auf diesen Beitrag antworten »

ok, ich nutze Linux, pygame kannte meine Version,
hab ich auf Festplatte installiert;
die zip's auf /dev/shm/130731105306-37902
entpackt,
produziert kein icon,
ersatzweiser Startversuch

[email protected]:~> cd /dev/shm
[email protected]:/dev/shm> cd 130731104529-26352/
[email protected]:/dev/shm/130731104529-26352> python JohnMaynard.pyw
Traceback (most recent call last):
File "JohnMaynard.pyw", line 172, in <module>
ico = pygame.image.load("icon.png")
pygame.error: Couldn't open icon.png
[email protected]:/dev/shm/130731104529-26352>

also mißglückt.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »