AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ein bzw. Ausfallswinkel

Ein Thema von hibbert · begonnen am 28. Sep 2004 · letzter Beitrag vom 29. Sep 2004
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Ein bzw. Ausfallswinkel

  Alt 28. Sep 2004, 21:08
Hallo,
ohne ein bißchen Mathematik geht es hier nicht.
Die Kugel bewegt sich auf einer Geraden. Eine Gerade wird duch folgende Funktion beschrieben
Code:
y:=m*x+b
Damit der Einfallswinkel gleich dem Ausfallswinkel ist muss tatsächlich nur die Steigung m mit -1
multipliziert werden. Wenn die Kugel die Bande berührt hat man die x u. die y-Koordinate. Damit
kann dan der neue Schnittpunkt b mit der Y-Achse berechnet werden.
Code:
b:=x-m*y
Das ist eigentlich das ganze Geheimnis
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von hibbert
hibbert

Registriert seit: 26. Aug 2003
Ort: Berlin
262 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Ein bzw. Ausfallswinkel

  Alt 28. Sep 2004, 21:18
@ Jens Schumann:
kannst du mir dass bitte noch mal etwas ausführlicher erklären, zb. was ist y , m, b und x ?

Und wann sollte ich welche "Formel" verwenden ?

thx hibbert
  Mit Zitat antworten Zitat
Benutzerbild von hibbert
hibbert

Registriert seit: 26. Aug 2003
Ort: Berlin
262 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Ein bzw. Ausfallswinkel

  Alt 28. Sep 2004, 21:27
@ Jens Schumann:
kannst du mir dass bitte noch mal etwas ausführlicher erklären, zb. was ist y , m, b und x ?

Und wann sollte ich welche "Formel" verwenden ?

thx hibbert

// edit: Doppelpost wegen DB Fehler. Kann den hier bitte wer löschen ? thx
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#14

Re: Ein bzw. Ausfallswinkel

  Alt 28. Sep 2004, 21:27
Hallo hibbert,
es handelt sich um Mathematik der 8. Klasse. Das solltest aberdrauf haben wenn Du ein Pong-Clone schreiben willst !!!!

y ist die y Koordinate in Pixel auf dem Formular.
x ist die x Koordinate in Pixel auf dem Formular.
m ist die Steigung
b ist der Schnittpunkt mit der Y-Achse.

m brechnet sich wie folgt

Code:
m=(y2-y1)/(x2-x1)
Es handelt sich also um eine simple Geradengleichung.
Diese Geradengleichung musst Du verwenden um Deine Kugel oder so über das Formular zu bewegen.Um die Kugel über das Formular zu bewegen muss Du ja die x und y Koordinaten der Kugel verändern. Den x Wert gibst Du vor und berechnest mit der Geradengleichung den dazugehörigen y-Wert.
Wenn die Kugel die Bande berührt multiplzierst Du m mit -1 und berechnest dann den neuen Wert für b.
Damit berechnest Du dann weiter.

Die Mathematik musst Du drauf haben. Die kann ich Dir hier nicht erklären.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Ein bzw. Ausfallswinkel

  Alt 29. Sep 2004, 14:38
Will jetzt deine Formel für eine Gerade nich schlecht machen, aber imho reicht es völlig, die Bewegung umzukehren, wenn die Pong-Kugel am oberen/unteren Rand ist, bzw. einen der Balken trifft. Hab selbst mal 'nen Pong-Clon geproggt und braucht keinerlei Mathe

Bei mir sah es wirklich nur so aus:

Delphi-Quellcode:
Procedure BallBewegen;
var x,y:integer; //x für waagerechte, y für senkrechte Bewegung
begin
shape1.left:=shape1.left+x;
shape1.top:=shape1.top+y;

if {Kugel am oberen Rand} or {Kugel am unteren Rand} then
   y:=y*(-1);
if {Kugel am linken Balken} or {Kugel am rechten Balken} then
   x:=x*(-1);
Du siehst, keinerlei Mathe
  Mit Zitat antworten Zitat
Benutzerbild von hibbert
hibbert

Registriert seit: 26. Aug 2003
Ort: Berlin
262 Beiträge
 
Delphi 2005 Personal
 
#16

Re: Ein bzw. Ausfallswinkel

  Alt 29. Sep 2004, 17:16
@gordon freeman:
Ich hab es jetzt auch so gemacht, und es funz auch

aber trotzdem ein dickes danke an alle...

thx hibbert
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#17

Re: Ein bzw. Ausfallswinkel

  Alt 29. Sep 2004, 17:33
Hallo,
kann es sein, dass der Ein- u. Ausfallswinkel immer 45° beträgt.
Wie würdet Ihr bei einem beliebigen Winkel vorgehen ?
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Ein bzw. Ausfallswinkel

  Alt 29. Sep 2004, 17:43
Genau so

Problematisch wird's, wenn die Grenzen nicht mehr oben/unten/links/rechts sind, sondern mal eine schiefe Bande rein kommt. Dann reicht das so nicht mehr, aber für eine auf einer Kante stehenden rechteckigen Begrenzung klappt das so.
Ohne schiefe Banden wird der Ball allerdings nie einen (betragsmäßig) anderen Winkel zu den Banden bekommen, als er von Anfang an hat.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#19

Re: Ein bzw. Ausfallswinkel

  Alt 29. Sep 2004, 17:53
Zitat von dizzy:
Genau so

Problematisch wird's, wenn die Grenzen nicht mehr oben/unten/links/rechts sind, sondern mal eine schiefe Bande rein kommt. Dann reicht das so nicht mehr, aber für eine auf einer Kante stehenden rechteckigen Begrenzung klappt das so.
Ohne schiefe Banden wird der Ball allerdings nie einen (betragsmäßig) anderen Winkel zu den Banden bekommen, als er von Anfang an hat.
Das kann nicht sein. Nur bei einem Winkel von 45° können x und y jeweils um 1 inkrementiert o. dekrementiert werden. Sobald ein anderer Winkel (nennen wir ihn mal Startwinkel) gewünscht ist klappt das nicht mehr. Wie wird denn y berechnet bei einem Winkel von 30° ?
Damit es tatsächlich wie eine Bewegung zur horizontalen mit einem Winkel von 30° aussieht muss y in Abhängigkeit von x berechnet werden. Bei 45° kann man hier y=x setzen oder y u. x unabhängig voneinander inkrementieren o. dekrementieren. Bei jedem anderen Winkel muss man über
Code:
y=m*x+b
gehen
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: Ein bzw. Ausfallswinkel

  Alt 29. Sep 2004, 18:06
Zitat von gordon freeman:
Delphi-Quellcode:
if {Kugel am oberen Rand} or {Kugel am unteren Rand} then
   y:=y*(-1);
if {Kugel am linken Balken} or {Kugel am rechten Balken} then
   x:=x*(-1);
Die Schrittweite ist doch garnicht 1 . Die ist hier beliebig gehalten -> das *(-1) dreht doch nur das Vorzeichen.

Sagen wir mal:
xStep = 1
yStep = 2
(also der Koordinatenzuwachs pro Cycle)

Bei einer Refelxion an der unteren Kante wird nun "yStep=yStep*(-1)" gemacht, und dann haben wir:
xStep = 1
yStep = -2

Der Winkel ist nicht 45°, aber trotzdem korrekt reflektiert.

\\edit: Genau so mache ich das im Übrigen auch bei meinem Gravitationssimulator, und das klappt. Da hatte ich auch erst wilde Vektorrechnung drin, bis ich gemerkt hab dass es ja bei den einfachen Begrenzungen auch einfacher geht . (Würde man allerdings die Kugeln voneinander abprallen lassen, dann wird die ganze Sache ungleich komplizierter, das stimmt.)
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 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