ich hab ein kleines problem... ich habe 4 Punkte aus denen ich ein Quad machen möchte.. nur, ich weiß nicht in welcher reihenfolge die punkte sind... Wie kann ich es schaffen das sich das Quad nicht überkreuzt..?
Ich brauche es um zwischen zwei edges (linien) eine fläche aufzuziehen.. sprich, die zwei edges sollen zwei der vier kanten des Quads sein
Hier mal zur veranschaulichung: A1/A2, bzw B1/B2 hängen immer zusammen, allerdings ist A1 nicht zwingend links von A2 und umgekehrt...
Auch über entfernungsmessung und dann einfach den geringsten abstand etc geht es nicht.. gibt immer fälle wo es dann schief geht
Hat wer ne idee wie ich das hinbekomme??
Aya~
PS: In welche richtung die Normale zeigt ist egal.
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Hat nicht jedes Viereck eine Winkelsumme von 360 Grad? Du hast alle vier Punkte also kannst du einfach die beiden einzigen Möglichkeiten prüfen.
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
ist das problem zweidimensional? dann (und ich glaube, das sollte in 3d auch funktionieren) kannst du die punkte ja entsprechend sortieren. zuerst nach X, und dann nach Y.
Hat nicht jedes Viereck eine Winkelsumme von 360 Grad? Du hast alle vier Punkte also kannst du einfach die beiden einzigen Möglichkeiten prüfen.
Das ist ne idee, werd ich mal versuchen
Zitat:
ist das problem zweidimensional? dann (und ich glaube, das sollte in 3d auch funktionieren) kannst du die punkte ja entsprechend sortieren. zuerst nach X, und dann nach Y.
Registriert: Mi Mär 22, 2006 20:16 Beiträge: 22 Wohnort: Wuppertal
Ich empfehle, insbesondere wenn du viel drehst, die Punkte zuerst in 2D zu Projezieren, denn du hast immer Fälle, wo aus einem Blickwinkel der Quad richtig aussieht aber in einem anderen Blickwinkel sich schneidet:
Im Demobild oben hab ich bei einem Quad den Punkt A2(z) zu mir hingezogen.
Gab schon Vorschlage, dabei wär mein Vorschlag, die Punkte B1 und B2 einfach zu vertauschen, wenn der Winkel (Cosinus-Wert) der Vektoren "Linien" V1 und V2 <0 ist, wobei V1 aus (A2-A1 [1. Linie]) und V2 aus (B2-B1 [2. Linie]) berechnet wird (Distanz zwischen P1-P2).
Die Methode, würde bei mehreren richtigen Lösungen die Lösung mit dem größten Flächeninhalt nehmen.
Ich werf dazu, unabhängig von der verwendeten Formel mal die Frage im Raum, was machst du denn in folgenden Situationen?:
Da sind sogar beide Möglichkeiten richtig, denn bei beiden kreuzt sich das Quadrat nicht, es lassen sich natürlich noch mehr solche Szenarien konstruieren.
Deshalb würde ich mich nochmal mit beschäftigen, ob du es nicht doch schaffst, die Daten schon von vornerein richtigrum zu kriegen, denn wenn die Dateneingabe undefiniert ist (bzw du weißt nicht in welche Reihenfolge die Punkte sind), dann ist natürlich auch das Aussehen der Quads in bestimmter weise undefiniert, oder ist das bei dir völlig egal, "hauptsache es kreuzt sich nicht"?
Oder könntest du uns sagen, worum es genau geht bzw wozu du das brauchst? Vielleicht gibt es ja auch ganz andere Lösungen.
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,
falls die Eckpunkte ein konkaves Viereck bilden oder die Punkte nicht alle in einer Ebene liegen, würde ich empfehlen, statt Quads lieber Triangle-Fans bzw. Triangle-Strips zu verwenden
Allerdings muss man dann auch aufpassen, mit welchem Eckpunkt begonnen wird.
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.