Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Auf welcher Verbindungsgeraden (der Eckpunkte) eines Polygons liegt ein Punkt
Antwort
 
Themen-Optionen
Alt 12.03.2006, 22:57   Nach oben    #1
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard Auf welcher Verbindungsgeraden (der Eckpunkte) eines Polygons liegt ein Punkt

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 .. ... boah ist das schlecht. *gg*


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.
Angehängte Grafiken
Dateityp: gif vektor.GIF (3,2 KB, 13x aufgerufen)
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.03.2006, 23:55   Nach oben    #2
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

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
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.03.2006, 00:11   Nach oben    #3
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von sparrow
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.
Hm. Nicht wirklich.

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>
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.03.2006, 09:22   Nach oben    #4
Benutzer
 
Registriert seit: 05.12.2005
Beiträge: 62
Standard

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
Sayang ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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

Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:28 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44