Я пытаюсь настроить геометрию в Гудини в том же направлении, что и нормаль на линии. Я получаю нормаль как вектор с величиной 1, а затем использую формулу angle = arccos ((x dot y) / (magnitude x * magnitude y). Чтобы получить угол поворота объекта, а затем умножить на 180, чтобы преобразовать его в градусах. по какой-то причине это не дает последовательного результата.
Я делаю что-то явно не так с моей математикой? Я новичок в Гудини, поэтому я не уверен, что могу что-то упустить из-за среды, которая усложнит это.
Вот код Python, который я использую.
#normalize and store as vector3
currentNormal = hou.Vector3(currentNormal).normalized()
previousNormal = hou.Vector3(previousNormal).normalized()
#get dot product and magnitudes
dotProd = numpy.dot(previousNormal, currentNormal)
previousMagnitude = numpy.sqrt((previousNormal[0]**2) + (previousNormal[1]**2) + (previousNormal[2]**2))
currentMagnitude = numpy.sqrt((currentNormal[0]**2) + (currentNormal[1]**2) + (currentNormal[2]**2))
nextLocationRotate = numpy.arccos(dotProd/(previousMagnitude * currentMagnitude))
nextLocationRotate = [0.0, nextLocationRotate*180, 0.0]
Я пытаюсь вращаться вокруг оси y.