Ich bin Scripting in Python und ich bin sehr neu, und habe nicht viel Erfahrung mit Vektor Mathematik, kann ich Punkt Produkt, Länge und Winkel von zwei Vektoren erhalten, und ich habe es geschafft, den Winkel der Differenz zwischen den zwei Punkten (eine Kante) zu erhalten, aber ich bin mir nicht sicher über die Mathematik/den Prozess der tatsächlichen Änderung der zweiten Menge von Punkten, um den Winkel der ersten anzupassen. Was ich versuche zu tun ist, die zweite Menge von Punkten zu drehen, um mit der ersten Menge übereinzustimmen, unabhängig von ihrer aktuellen Position. Zum Beispiel:Kanten ändern
#python
import math
def dot (v1, v2):
return (v1[0]*v2[0] + v1[1]*v2[1])
def length (v):
return math.sqrt(dot(v,v))
def normalize (v):
r = [0.0] * 2
v_len = length (v)
if v_len > 0.0:
v_invLen = 1.0/v_len
r[0] = v[0] * v_invLen
r[1] = v[1] * v_invLen
return r
def direction (v1, v2):
return (v2[0]-v1[0], v2[1]-v1[1])
def angle(dotProduct):
return math.degrees(math.acos(dotProduct))
p1,p2 = (0,0),(0,1) <--- first edge
p3,p4 = (0,0),(2,2) <--- second edge
dir = direction(p1,p2)
dir2 = direction(p3,p4)
dir_n = normalize(dir)
dir2_n = normalize(dir2)
dotProduct = dot(dir_n, dir2_n)
ang1 = math.degrees(math.acos(dotProduct))
print ang1
Das gibt mir einen Winkel von 45 Grad, was ich versuche jetzt zu tun ist, um die zweite Kante p2 drehen, um den Winkel von p1 unabhängig von seiner Position im Welt-Raum paßt so p1 könnte (sein 1,1), (- 2, -2) und p2 könnte (-1,1) sein, (- 3,3) mit einer 90-Grad-Drehung erforderlich
Es scheint ein Syntaxfehler im Ergebnis, ein fehlendes Komma vor v vielleicht? Und ich denke, v muss sein v1 – Kenny
Es gab ein Minuszeichen fehlt, korrigiert es. Probieren Sie das neue Programm –
Es scheint zu funktionieren .. aber die Follow-up-Frage, was kann ich mit dem gedrehten Vektor tun? Die zweite Kante (-1,1), (- 3,3) sollte sich um 90 Grad drehen, um der ersten Kante (1,1), (- 2, -2) zu entsprechen, und ihre neuen Werte sollten (-1,3) sein. , (- 3,1) – Kenny