Ich bin Skripte in Python für Anfänger. Dieses Beispiel einfach zu machen, habe ich eine Kante, mit uv-Koordinaten von ([0,0], [1,1]), so ist es ein 45-Grad-Winkel. Ich habe eine andere Kante, die ([0,0], [0,1]) ist, also ist ihr Winkel 0/360 Grad. Mein Ziel ist es, die Winkel dieser beiden Kanten zu vergleichen, um die Differenz zu erhalten, so dass ich den Winkel der zweiten Kante so ändern kann, dass er dem Winkel der ersten Kante entspricht. Gibt es eine Möglichkeit, dies über Vektormathematik zu tun?Passende Winkel zwischen Kanten
Antwort
Am einfachsten zu rekonstruieren und somit konstruktiv zu erinnern ist IMO das komplexe Bild. Um den Winkel von a=a.x+i*a.y
zu b=b.x+i*b.y
zu berechnen, drehen Sie b
zurück, indem Sie mit dem Konjugierten von a
multiplizieren, um einen Winkel vom Nullwinkel resp. die positive reelle Achse,
arg((a.x-i*a.y)*(b.x+i*b.y))
=arg((a.x*b.x+a.y*b.y)+i*(a.x*b.y-a.y*b.x))
=atan2(a.x*b.y-a.y*b.x , a.x*b.x+a.y*b.y)
anzumerken, dass Bildschirmkoordinaten die entgegengesetzte Orientierung zur kartesischen/komplexen Ebene verwenden, wodurch die Verwendung ändern, um einen Vorzeichenschalters, wie aus atan2(y,x)
zu atan2(-y,x)
einen Winkel in der gewöhnlichen Richtung zu erhalten.
Um einen Vektor b
gedrehten Winkel (in Radiant) w
aus a
, vermehren sich durch cos(w)+i*sin(w)
zu produzieren
b.x = cos(w)*a.x - sin(w)*a.y
b.y = cos(w)*a.y + sin(w)*a.x
Sie müssen erhalten werden rescale eine bestimmte Länge von b
zu erhalten.
Ich bin mir nicht sicher, ob ich dir folgt LutzL ... sind a und b, 45 bzw. 0? – Kenny
Nein. Mit Zahlen aus Ihrer Frage könnte es sein: a = (a.x, a.y) = (1,1) 'und' b = (1,0) '. Im Allgemeinen sind diese Vektoren die Unterschiede zum Rotationszentrum, was (wahrscheinlich) in Ihrer Frage "(0,0)" war. – LutzL
- 1. Kanten ändern
- 2. Passende va_list Typen zwischen Compilern
- 3. Plot Winkel zwischen Vektoren
- 4. Winkel zwischen 3 Scheitelpunkten
- 5. Winkel zwischen 3 Punkten?
- 6. Es konnte keine passende Version für den Winkel gefunden werden
- 7. Regex Differenz zwischen Wortgrenze Ende und Kanten
- 8. Gefundene signierte Winkel zwischen Vektoren
- 9. Matlab Winkel zwischen zwei Punkten
- 10. UIBezierPfad runde Kanten?
- 11. GraphViz, Gruppieren derselben Kanten
- 12. Winkel zwischen 2 GLKMatrix4 Objekt in OpenGLES?
- 13. Berechnung Winkel zwischen zwei Punkten - Java
- 14. Finden Sie den Winkel zwischen zwei Lager
- 15. Signierter Winkel zwischen zwei Vektoren ohne Referenzebene
- 16. Winkel zwischen zwei Breiten-/Längenpunkten berechnen
- 17. Der Unterschied zwischen ":" und =“in Winkel 2
- 18. Winkel JS - Kommunikation zwischen nicht-abhängige Dienste
- 19. Unterschied zwischen angular2/Kern und @ Winkel/Kern
- 20. Zeichnen mehrerer Kanten zwischen zwei Knoten mit networkx
- 21. Erstellen Sie Kanten zwischen Knoten der gleichen Klasse mit SQL
- 22. Wie Etikett Kanten zwischen ihnen in d3 Graph
- 23. Dijkstra-Algorithmus in der Adjazenzmatrix zwischen spezifischen Kanten in Android
- 24. Passende Spalten in Excel
- 25. Passende Farbe/Beleuchtung zwischen Bildern mit einem Farbstandard in GIMP
- 26. Ambiguität zwischen const am besten passende Funktion und andere Funktion
- 27. Passende Daten
- 28. Weinetikett passende
- 29. Python: Kanten von Kanten erkennen und in ein Quadrat zuschneiden?
- 30. Wie Blur Div Kanten
Ihre Frage ist nicht klar. Sind Sie sicher, dass die ersten Listen (Punkte) in diesen beiden Tupeln (Kanten) gleich sind? Willst du die Winkel zwischen diesen beiden Vektoren berechnen? Wenn beide Ja sind, verwenden Sie das Kosinusgesetz oder das Skalarprodukt (die im Grunde gleich sind). Sie könnten auch die atan2() -Funktion verwenden, aber das ist komplizierter. –
Die Punkte sind UV-Koordinaten, keine XYZ-Koordinaten, die Kanten sind ein Paar dieser Koordinaten. – Kenny
Ich habe ein Codebeispiel für ein Punktprodukt, um Vektoren zwischen drei Punkten zu vergleichen, um zu sehen, ob sie gleich sind. Ich bin mir jedoch nicht sicher, wie ich den Unterschied im Winkel ermitteln soll. – Kenny