Alle Vektoren im Bild haben die selben Beträge und der Winkel zwischen ihnen ist der selbe. und sie liegen alle in der yz-ebene
ich denke mir den Startvektor AB aus, indem ich mir den Startpunkt und Endpunkt ausdenke. Daraus bilde ich dann den Vektor AB. Diesen Vektor multipliziere ich mit eine Drehmatrix mit entsprechendem winkel und addiere den endpunkt des Vektors AB. Somit hätte ich dann den Vektor P1 im Bild. P1 multipliziere ich ebenfalls mit der Drehmatrix, aber mit negativen winkel und addiere wieder den endpunkt von P1, dann hätte ich den Vektor P2
so mein Problem ist, dass der endpunkt im folgenden code in der for-schleife fest ist. Der endpunkt ist der endpunkt des Vektors Ab im folgenden Code, ABER es soll immer der Endpunkt des neues Vektors sein. also eine variabel. wie mache ich das am besten?
hier der code (nur ein ausschnitt). tmp ist im code nur eine liste, bei der ich auf die koordinaten des vektors zugreifen muss. die liegen im 5,6 und 7 element der liste
Code: Alles auswählen
def drehmatrix(winkel):
Drehmatrix = numpy.array([[1,0,0],[0, math.cos(winkel),-math.sin(winkel)],[0,-math.sin(winkel),math.cos(winkel)]])
return Drehmatrix
startpunkt = numpy.array([0,1,2])
endpunkt = numpy.array([0,4,6])
startvektor = endpunkt - startpunkt
tmp.append(["HETATM", len(tmp)+1, "C", "POP" , "L", 1, startvektor[0], startvektor[1], startvektor[2]])
print tmp[31]
for ii in range(Anzahl_der_C):
letzter_vektor = numpy.array([float(tmp[len(tmp)-1][6]),float(tmp[len(tmp)-1][7]),float(tmp[len(tmp)-1][8])])
if letzter_vektor[1]>=0:
gedrehter_vektor = numpy.dot(drehmatrix(numpy.radians(180-104)), letzter_vektor)
if letzter_vektor[1]<0
gedrehter_vektor = numpy.dot(drehmatrix(numpy.radians(-(180-104))), letzter_vektor)
new_vektor = numpy.add(gedrehter_vektor, endpunkt)
Liste_der_C = ["HETATM", len(tmp)+1, "C", "POP" , "L", 1, new_vektor[0], new_vektor[1], new_vektor[2]]
tmp.append(Liste_der_C)