Использование кватернионов в Якобианском ИКC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование кватернионов в Якобианском ИК

Сообщение Anonymous »

Я работаю над обратной кинематической системой, используя Jacobian, но я борюсь с созданием Jacobian Matirx, населенного частичными производными для/с кватернионами. На данный момент я использую углы Euler, используя текущую формулу:

где v является локальной осью x, y или z, трансформированная в мировое пространство.
Вот фрагмент кода для этого: < /p>

Код: Выделить всё

    glm::vec3 forward = transforms[parent].forward();
glm::vec3 forwardCross = glm::cross(bone, forward);
ikt.jacobi(index + 0, j + 2) = forwardCross.x;
ikt.jacobi(index + 1, j + 2) = forwardCross.y;
ikt.jacobi(index + 2, j + 2) = forwardCross.z;
< /code>
и после затухания наименьших квадратов я добавляю тета-изменения через Eulers.glm::vec3 oldEul = transforms[child].getEulerRotation();
glm::vec3 eulDelta = { dTheta(jointNum + 0), dTheta(jointNum + 1), dTheta(jointNum + 2) };
transforms[child].setEulerRotation(oldEul + eulDelta);
Этот метод в основном функционален, но разваливается, приближаясь к сингулярности/блокировке ора /п>

Подробнее здесь: https://stackoverflow.com/questions/794 ... acobian-ik
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»