src/CCDSolver.cpp
CCDSolver::CCDSolver()
   : mNumIterations(15)
   , mConvergenceThreshold(0.00001f)
{

}
// Cyclic Coordinate Descent (CCD) is an algorithm that can be used to pose a chain of joints so that the last joint of the chain
// comes as close as possible to touching a target
// The three important concepts of CCD are:
// - The goal, which is the point in space that we are trying to touch
// - The IK chain, which is a list of all the joints that will need to rotate to reach the goal
// - The end effector, which is the last joint in the chain
// One iteration of the CCD algorithm looks like this in pseudocode:
// - Loop backwards over the IK chain, starting with the joint that comes before the end effector
// - Calculate two vectors: currJointToEndEffector and currJointToGoal
// - Rotate the current joint so that the orientation of the currJointToEndEffector vector matches
//   the orientation of the currJointToGoal vector
// By repeating the previous steps over many iterations, the algorithm may or may not achieve convergence
Cyclic Coordinate Descent (CCD) is an algorithm that can be used to pose a chain of joints so that the last joint of the chain
comes as close as possible to touching a target
The three important concepts of CCD are:
The goal, which is the point in space that we are trying to touch
The IK chain, which is a list of all the joints that will need to rotate to reach the goal
The end effector, which is the last joint in the chain
One iteration of the CCD algorithm looks like this in pseudocode:
Loop backwards over the IK chain, starting with the joint that comes before the end effector
Calculate two vectors: currJointToEndEffector and currJointToGoal
Rotate the current joint so that the orientation of the currJointToEndEffector vector matches
the orientation of the currJointToGoal vector
By repeating the previous steps over many iterations, the algorithm may or may not achieve convergence
Cyclic Coordinate Descent ( CCD ) is an algorithm that can be used to pose a chain of joints so that the last joint of the chain comes as close as possible to touching a target The three important concepts of CCD are : The goal which is the point in space that we are trying to touch The IK chain which is a list of all the joints that will need to rotate to reach the goal The end effector which is the last joint in the chain One iteration of the CCD algorithm looks like this in pseudocode : Loop backwards over the IK chain starting with the joint that comes before the end effector Calculate two vectors : currJointToEndEffector and currJointToGoal Rotate the current joint so that the orientation of the currJointToEndEffector vector matches the orientation of the currJointToGoal vector By repeating the previous steps over many iterations the algorithm may or may not achieve convergence
CCDSolver::CCDSolver()
   : mNumIterations(15)
   , mConvergenceThreshold(0.00001f)
{
}
CCDSolver :: CCDSolver ( ) : mNumIterations ( 15 ) , mConvergenceThreshold ( 0.00001f ) { }
Cyclic Coordinate Descent (CCD) is an algorithm that can be used to pose a chain of joints so that the last joint of the chain
comes as close as possible to touching a target
The three important concepts of CCD are:
 The goal, which is the point in space that we are trying to touch
 The IK chain, which is a list of all the joints that will need to rotate to reach the goal
 The end effector, which is the last joint in the chain
One iteration of the CCD algorithm looks like this in pseudocode:
 Loop backwards over the IK chain, starting with the joint that comes before the end effector
 Calculate two vectors: currJointToEndEffector and currJointToGoal
 Rotate the current joint so that the orientation of the currJointToEndEffector vector matches
the orientation of the currJointToGoal vector
By repeating the previous steps over many iterations, the algorithm may or may not achieve convergence
Cyclic Coordinate Descent ( CCD ) is an algorithm that can be used to pose a chain of joints so that the last joint of the chain comes as close as possible to touching a target The three important concepts of CCD are : The goal which is the point in space that we are trying to touch The IK chain which is a list of all the joints that will need to rotate to reach the goal The end effector which is the last joint in the chain One iteration of the CCD algorithm looks like this in pseudocode : Loop backwards over the IK chain starting with the joint that comes before the end effector Calculate two vectors : currJointToEndEffector and currJointToGoal Rotate the current joint so that the orientation of the currJointToEndEffector vector matches the orientation of the currJointToGoal vector By repeating the previous steps over many iterations the algorithm may or may not achieve convergence