Я не уверен, почему вы ожидаете, что вращение изменится. У вас есть программные «существа», представляющие начальную точку, конечную точку и поворот. Вычисление точки назначения на основе двух других «существ» не должно повлиять на них.
А как насчет обычного подхода? Если вам нужно повернуть положение (x, y, z) вокруг точки (a, b, c), сначала переведите положение так, чтобы вращение было вокруг начала координат: используйте (xa, yb, zc) в качестве позиции поверните вокруг начала координат, как обычно, чтобы получить новую переведенную позицию (x'-a, y'-b, z'-c), переведите назад и получите новую позицию (x ', y', z ').