![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Hallo,
folgendes Problem. Ein Objekt A trifft auf ein Objekt B. A ist dynamisch, bewegt sich also auf einem Panel. B ist statisch. A läuft nun in der Richtung u auf das Hindernis zu. Um nun den Einfalls- und Ausfallswinkel zu berechnen brauche ich ja den Vektor der Hinderniswand - so nenne ich das mal. Ich habe mal meine kompletten Grafikkünste in die Grafik gesteckt, die ihr im Anhang findet Meine Frage ist nun, wie ich das am besten rausbekommen, wenn das Hindernis ein Polygon ist. Ich muss ja irgendwie herausfinden, auf welcher Geraden zwischen den einzelnen Eckpunkten des Polygons der Kontakt zustandegekommen ist. Heißt also, dass ich die Vektoren zwischen allen Eckpunkten berechnen müsste, um dann zu überprüfen, ob der jeweilige Kontaktpunkt mit Objekt A auf dieser Geraden liegt. Ist das meine einzige Möglichkeit oder gibt es etwas, was ich für dieses Problem "ganz einfach" verwenden kann? Sollte das Problem nicht klar geworden sein, dann bitte einfach kurz Bescheid sagen. Ich reiße mich dann nochmals zusammen und erläutere es noch etwas detaillierter. Ich danke. Grüße, Ben. |
|
|
|
|
|
Nach oben #2 |
|
Sesselkleber
Registriert seit: 17.01.2005
Beiträge: 567
|
Als zuerst mal:
Deine Grafikkünste sind prima.. wirklich. ich finde du hast wirklich Talent ,das du fördern solltest. Ich sehe im Moment keine andere Möglichkeit als festzustellen vonwelcher Seite nun der "Einschlag" erfolgte. Vielleicht hast du eine Möglichkeit das zu umgehen indem du es schonmal anhand der Richtung der Kugel einiges ausschließt. Bewegt sich die Kugel nach links dann kann sie nur rechts einschlagen ,etc. Ich bin mir nicht sicher ob es vielleicht schon in den Klassen vordefinierte Methoden gibt die dir die Möglichkeit geben die Position des "Einschlags" feszustellen, ich arbeite in der Regel ja mit einer Engine zur Spieleprogrammierung. Gruß Sparrow |
|
|
|
|
|
Nach oben #3 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Zitat:
Es ist ja so, dass ich ein Hindernis positioniere, indem ich z.B. drei Punkte festlege. Die werden dann verbunden und ich habe ein Dreieck. Jippieh. Jetzt weiß ich aber ja immer noch nicht, welche der Seiten rechts ist und welche links! Indem ich dann die Verbindungsgeraden zwischen den Eckpunkten berechne kann es mir ja dann auch egal sein, ob links rechts oben oder unten. Ist halt Vektorrechnung bzw. analytische Geometrie. Hm, umso öfter ich über meine Frage nachdenke, desto sicherer bin ich mir, dass ich es genau so machen werde. *gg* Wenn jemand eine viel einfachere Lösung hat. Bitte ansagen .. <offtopic> Nach dem Dienstag werde ich mich glaube ich auch mal mit der von Dir empfohlenen Engine befassen und das hier vielleicht nochmal "nachbauen". Derzeit ist halt in der Aufgabenstellung festgelegt, dass keine Engines verwendet werden sollen. Find ich auch gut .. sonst hätte ich wahrscheinlich nicht so viel Basics nachgelernt. </offtopic> |
|
|
|
|
|
|
Nach oben #4 |
|
Benutzer
Registriert seit: 05.12.2005
Beiträge: 62
|
Also den VEKTOR berechnest du, indem du ganz einfach die Koordinate des "Pfeilfußes" von der Koordinate der Pfeilspitze abziehst. Du normalisierst ihn halt einfach indem du die Koordinate des Pfeilfußes auf (0,0) setzt - machst einen sog. Ortsvektor daraus.
Wenn du also folgendes Polygon PG = {(12,16), (23,14), (18,30), (12,16)}, dann sind die einzelnen Vektoren folgende v1 - von 12,16 nach 23,14 => -11,2 (der Vektor geht vom Ursprung (0,0) nach -11,2 v2 - von 23,14 nach 18,30 => 5,-16 v3 - von 18,30 nach 12,16 => 6,14 Allgemein: Polygon PG = {P0, P1, P2, ... Pn} (P = Punkt) Vektor vi (i = 1..n x-Koordinate vix = P(i-1)x - Pix y-Koordinate viy = P(i-1)y - Piy Aber ich bin mir nicht ganz sicher, ob es das war was du wissen wolltest ^^ Bzgl. der Kollision. Mach doch aus dem Dreieck drei "Kantenobjekte" und implementiere dort die "Kollisionsabfrage". Dann weisst du doch direkt, wo die Kollision stattgefunden hat. Und, dass das einzige Objekt, das mit einem Kantenobjekt kollidieren kann, die Kugel ist, ist ja logisch. Dann brauchst du nur noch den Winkel zw. Richtungsvektor der Kugelbewegung und Ortsvektor des Kantenobjektes zu berechnen... Hoffe ich konnte einigermaßen helfen ^^ sayang |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Alle punkt auf einer linie | Xean | Allgemeine Java-Programmierung | 10 | 03.06.2006 19:44 |
| [PHP] FTP-Funktionen in PHP nutzen | MrNiceGuy | Tutorials | 0 | 24.05.2006 14:18 |
| Textfelder auf verschiedenen Tabs per Observer synchronisieren | Sayang | Desktop-Applikationen und Grafik | 2 | 05.12.2005 19:14 |
| [PHP] Aktuell gespielten Titel von XMMS auf einer Webseite in einer Grafik anzeigen | Corvin | Tutorials | 0 | 28.11.2005 16:26 |
| Login auf mehreren Domains | Homepagespeicher | PHP-Programmierung | 17 | 21.08.2005 16:54 |