AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kugel/Kreis prallt von Eck/Kante ab
Thema durchsuchen
Ansicht
Themen-Optionen

Kugel/Kreis prallt von Eck/Kante ab

Ein Thema von Florian H · begonnen am 11. Okt 2006 · letzter Beitrag vom 30. Dez 2008
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#21

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 07:44
nein ich möchte aber auch draufrumkritzeln dürfen, dass mein kreis sogar an ner Kurve abtitscht

dafür müsste er nur immer ne Pixelabfrage machen, ob er nen Punkte berührt, nur wie geht das?
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#22

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 08:16
Zitat von Florian H:
eine Frage: Wie kommt die Kollision 1 zu stande, wenn es doch an sich das gleiche wie 3 ist?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#23

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 08:25
Hi,

Dein Problem sieht ganz nach meinem Pinpong Sample aus das ich die Letzten Tage mal zusammengestellt habe.


DL Link ( inclusive Source )

Gruß Corpsman
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#24

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 12:55
3 trifft mit einer anderen höhe auf das Rechteck
(1 müsste hierfür etwas weiter links und demnach auch etwas weiter runter gezeichnet sein)
sieht man zwar nicht, ist aber so

wie kann man denn nun diese PxelanPixel?-frage lösen?
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#25

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 13:02
genau so, wie mehrfach beschrieben.
Vektor Pixel-Kugelmitte=>Normale.
Winkel Einfall-Normale = Winkel Ausfall-Normale.
=> Ausfall = Einfall+2*(Winkel Einfall-Normale)
//Edit: Der Abprall an Linien geht übrigens genauso mit einer Ausnahme: Du berechnest vorher den Pixel der Line, den die Kugel berührt.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#26

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 13:10
auf welche frage war das die antwort???
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#27

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 13:57
Sorry..du wolltest woht wissen, ob und welchen Pixel die Kugel während ihrer Bewegung berührt...
Ob ist relativ einfach: alle, deren Abstand zur Strecke Iststandort-Sollstandort kleiner Radius der Kugel (wobei hier zu beachten ist, dass falls der kürzeste Abstand ausserhalb der Strecke (also hinter dem Zielpunkt) liegt, (Abstand Pixel-gerade)^2 + (Abstand Lotfußpunkt-Zielpunkt)^2 <=Radius^2 sein muss).
für alle diese Pukte berechnest Du nun den Abstand zum Startpunkt wie Folgt:
1. Berechnung Abstand LotFuß zum Startpunkt
2. hiervon ziehst Du ab: wurzel(Radius^2-(Abstand Punkt-gerade)^2).
Der kleinste Wert ist dann der Pixel, der zerst berührt.

Wenn Dir das zu kompliziert war, sag bescheid, dann zieh ich mir heute abend mal ne Zeichnung aus den Fingern.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
dino

Registriert seit: 15. Jul 2006
Ort: Bad Münstereifel
627 Beiträge
 
Delphi 5 Professional
 
#28

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 14:02
ich hab an eine Stelle geschrieben, dass ich auch auf die canvas der Form zeichnen will(per maus) und der Ball soll dann auch daran abtitschen

hier jeden Punkt zu speichern und immer wieder zu testen ist mir ein bisschen viel

der soll nur um sich gucken, ob da Pixel sind

also nur in die bewegungsrichtung zugewandte kreishälfte
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#29

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 14:40
Das ist doch das selbe...Der Canvas ist doch ein 2dim array wo die farbe gespeichert ist. Du liest einfach per readline die bitmap des canvas aus und da kannst du dann gucken, ob pixel gesetzt ist oder nicht. ReadPixel ginge auch, ist aber langsamer.
mit dem um sich gucken ginge auch, aber dann must Du gewährleisten, dass sich der Kreis je Schritt nur um einen Pixel bewegt.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#30

Re: Kugel/Kreis prallt von Eck/Kante ab

  Alt 12. Okt 2006, 16:32
Zitat von Sidorion:
Sorry..du wolltest woht wissen, ob und welchen Pixel die Kugel während ihrer Bewegung berührt...
Ob ist relativ einfach: alle, deren Abstand zur Strecke Iststandort-Sollstandort kleiner Radius der Kugel (wobei hier zu beachten ist, dass falls der kürzeste Abstand ausserhalb der Strecke (also hinter dem Zielpunkt) liegt, (Abstand Pixel-gerade)^2 + (Abstand Lotfußpunkt-Zielpunkt)^2 <=Radius^2 sein muss).
für alle diese Pukte berechnest Du nun den Abstand zum Startpunkt wie Folgt:
1. Berechnung Abstand LotFuß zum Startpunkt
2. hiervon ziehst Du ab: wurzel(Radius^2-(Abstand Punkt-gerade)^2).
Der kleinste Wert ist dann der Pixel, der zerst berührt.

Wenn Dir das zu kompliziert war, sag bescheid, dann zieh ich mir heute abend mal ne Zeichnung aus den Fingern.
Wenn du dich etwas genauer ausgedrückt hättest, könnte man es auch verstehen. Was meinst du mit Ist- und Sollstandort? der Mittelpunkt der Kugel vor und nach Bewegung? Wie errechnest du denn einen Abstand zwischen einem Punkt und einer Strecke? Was meinst du mit Zielpunkt und Startpunkt? Das gleiche wie der Sollstandort und Iststandort? Welche Gerade meinst du mit Gerade? Und außerdem kann man zu einer Gerade keinen Abstand messen. Was heißt Lotfußpunkt?

Prüfst du immer, ob sich der Ball dahin bewegen kann, wohin er sich bewegen will und bewegst ihn erst dann?


Zitat von Sidorion:
Du liest einfach per readline die bitmap des canvas aus und da kannst du dann gucken, ob pixel gesetzt ist oder nicht. ReadPixel ginge auch, ist aber langsamer.
Du meinst wohl TBitmap.ScanLine und TCanvas.Pixels, oder?

Zitat von dino:
der soll nur um sich gucken, ob da Pixel sind
Ja, das wär vielleicht gar nicht mal so schlecht. Dann bewegst du die Kugel aber nicht sofort um so viele Pixel, wie sie sich bewegen soll, sondern immer nur um einen. Kann man mit ner for-Schleife machen, wenn die Kugel eine Geschwindigkeit von 5 Pxs/Timeraufruf hat: for i := 1 to 5. In jedem Schleifendurchlauf prüfst du dann, ob sich auf den Pixels auf denen die Kugel jetzt ist und vorher nicht war, nicht zu überschreitende Pixels befinden. Wenn ja, berechnest du mit jedem dieser nicht zu überschreitenden Pixels nacheinander die neue Richtung. In diese bewegt sich die Kugel dann beim nächsten Schleifenaufruf um einen Pixel.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


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