Wie berechne ich die Durchschnittliche Richtung der beiden Vektoren
Schreibe ich an einem opengl-basierten iphone-app und möchte, um es einem Benutzer erlauben, zu übersetzen etwa eine view basierend auf der Richtung, die Sie bewegen Sie zwei Finger auf den Bildschirm. Für eine finger-ich weiß, ich könnte einfach berechnen Sie den Vektor von der Startposition zur aktuellen position des Benutzer finger und dann finden Sie den Einheitsvektor von diesem zu bekommen, nur die Richtung, aber ich weiß nicht, wie ich dies für zwei Finger, ich denke nicht, dass das hinzufügen der Komponenten der Vektoren und die Berechnung der durchschnittlichen arbeiten würde, so bin ich ziemlich viel stecken.
InformationsquelleAutor Mike Broughton | 2009-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vektor-Mathematik funktioniert genau so, wie Sie denken:
InformationsquelleAutor Alex Wayne
In der Regel ist es besser zu multiplizieren als zu dividieren, für die Gründe der Schnelligkeit, wenn dabei Grafik-Programmierung, so würde ich das hier empfehlen:
v3 = (v1 + v2) * 0.5 f;
/ 2.0
ist das gleiche wie* 0.5
?Ja sollte es, zumindest aus meiner Erfahrung mit typischer C-Compiler. Es ist eine andere Geschichte, wenn Sie eine variable, die konstant über sagen wir mal eine längere Schleife, in der Sie teilen Sie etwas von ihm. Dann kann ich Messen, Unterschiede, wenn Sie berechnen eine neue variable (die inverse), und multiplizieren Sie in der Schleife. Optimierung Compiler sind ziemlich schnell verbessert, obwohl.
InformationsquelleAutor petrocket
Wenn Sie interessiert sind, nur die Richtung, die Sie sollte hinzufügen, und das Ergebnis normalisieren Vektor,
lassen v1 != v2...
wenn nur interessiert in die Richtung, die v1 und v2 muss normalisiert werden, ersten.
InformationsquelleAutor SingleNegationElimination
Einfaches Gedankenexperiment: Tun Sie es für die einheitsvektoren in x-und y-Richtung. Intuitiv können Sie die Bild, dass der "Durchschnitt" wäre ein Einheitsvektor in einem 45-Grad-Winkel nach rechts oben. Das ist genau das, was passiert. Das Gedanken-experiment deutet darauf hin, dass Sie brauchen, um zu normalisieren, die durchschnittlich von der Größe zu bekommen, ein Einheitsvektor. Ich würde empfehlen, dass Sie das tun.
InformationsquelleAutor duffymo
hinzufügen und dividiert durch zwei funktioniert
InformationsquelleAutor tliff
Sorry, aber das ist falsch. Vektor-Welt "bedeuten" im Sinne von durchschnittlich-Komponenten bedeutet nichts. Stell dir vor (-1 0) und (1 0) -> Durchschnitt = 0 0 😉
InformationsquelleAutor Ferdinand Huegel
es ist nicht so einfach, wie es Aussehen könnte: Sie haben zu verwenden, slerp-interpolation zu finden, der halbe Bogen auf der unit sphere: http://en.wikipedia.org/wiki/Slerp
In die Tiefe, hier: http://www.essentialmath.com/index.htm
InformationsquelleAutor Ferdinand Huegel
Verstehen es intuitiv, Sie könnten zeichnen Sie die beiden Vektoren unten. Dann ziehen Sie eine Linie segment zwischen den Endpunkten der beiden. Der Mittelpunkt in diesem segment ist der Durchschnittliche Vektor. Dies funktioniert für eine beliebige Anzahl von Dimensionen.
InformationsquelleAutor simplename