From 250674fb814677a0ff14fb3122c3c08c9861e3d6 Mon Sep 17 00:00:00 2001
From: Hesper Yin <hyin2@andrew.cmu.edu>
Date: Thu, 19 Nov 2020 14:42:32 -0500
Subject: [PATCH] Update skeleton_kinematics.md

---
 docs/animation/skeleton_kinematics.md | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/docs/animation/skeleton_kinematics.md b/docs/animation/skeleton_kinematics.md
index ab74788..b98151d 100644
--- a/docs/animation/skeleton_kinematics.md
+++ b/docs/animation/skeleton_kinematics.md
@@ -94,12 +94,11 @@ which is a simple extension actually. Since each term is independent and added t
 
 You should implement multi-target IK, which will take a `std::map` of `Joint`s and target points for that joint. Each joint can only have 1 target point.
 
-In order to implement this, you should update `Joint::calculateAngleGradient` and `Skeleton::reachForTarget`. `Joint::calculateAngleGradient` should calculate the gradient of <img src=task2_media/0079.png height="14"> in the x,y, and z directions, and add them to `Joint::ikAngleGradient` for all relevant joints. `Skeleton::reachForTarget` should actually do the gradient descent calculations and update the angles of each joint, saving them with `Joint::setAngle`. In this function, you should probably use a very small timestep, but do several iterations (say, 10s to 100s) of gradient descent in order to speed things up. For even faster and better results, you can also implement a variable timestep instead of just using a fixed one. Note also that the root joint should never be updated.
+In order to implement this, you should update `Joint::compute_gradient` and `Skeleton::step_ik`. `Joint::compute_gradient` should calculate the gradient of <img src=task2_media/0079.png height="14"> in the x,y, and z directions, and add them to `Joint::angle_gradient` for all relevant joints. `Skeleton::step_ik` should actually do the gradient descent calculations and update the `pose` of each joint. In this function, you should probably use a very small timestep, but do several iterations (say, 10s to 100s) of gradient descent in order to speed things up. For even faster and better results, you can also implement a variable timestep instead of just using a fixed one. Note also that the root joint should never be updated.
 
 A key thing for this part is to _remember what coordinate frame you're in_, because if you calculate the gradients in the wrong coordinate frame or use the axis of rotation in the wrong coordinate frame your answers will come out very wrong!
 
 #### Using your IK!
 Once you have IK implemented, you should be able to create a series of joints, and get a particular joint to move to the desired final position you have selected.
 
-[[media/ik.gif]]
 
-- 
GitLab