python中如何从二面角计算笛卡尔坐标

python中如何从二面角计算笛卡尔坐标,python,numpy,scipy,coordinates,coordinate-transformation,Python,Numpy,Scipy,Coordinates,Coordinate Transformation,我有笛卡尔空间中的点集合。我可以使用python和numpy计算由四个点(a、b、c、d)的给定子集合定义的二面角。以下是我的职能: def getDihedral(a,b,c,d): v1 = getNormedVector(a, b) v2 = getNormedVector(b, c) v3 = getNormedVector(c, d) v1v2 = numpy.cross(v1,v2) v2v3 = numpy.cross(v2,v3) return getAngle(v1

我有笛卡尔空间中的点集合。我可以使用python和numpy计算由四个点(a、b、c、d)的给定子集合定义的二面角。以下是我的职能:

def getDihedral(a,b,c,d):
 v1 = getNormedVector(a, b)
 v2 = getNormedVector(b, c)
 v3 = getNormedVector(c, d)
 v1v2 = numpy.cross(v1,v2)
 v2v3 = numpy.cross(v2,v3)
 return getAngle(v1v2,v2v3)

def getNormedVector(a,b):
 return (b-a)/numpy.linalg.norm(b-a)

def getAngle(a,b):
 return numpy.rad2deg(numpy.arccos(numpy.dot(a/numpy.linalg.norm(a),b.T/numpy.linalg.norm(b))))[0,0]

我只想旋转一个二面角,如何使用python与numpy和scipy计算点的子集合的新坐标?

如果可以计算二面角,我假设您可以获得要旋转点子集的轴。考虑到这一点,您可以通过将所有点围绕此轴旋转vpython中所需的角度来轻松完成此操作-请参见(转到“旋转向量”)。否则,您需要编程(在中详细说明)