# help with CCD algorithm

This topic is 3552 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

i'm trying to achieve inverse kinematics using cyclic-coordinate descent (CCD) for a chain of joints - (0, 1, 2, ... , s). from what i've understood of it, i've written some code which does not work at all. could you please tell where i'm going wrong. i've modified the code to make it understandable.
//                  * d (x,y)
//
//
//  *-----*------*-------*
//        <---(i) q    (s) p

Coord p, q, d;
Joint *ptrp, *ptrq, *ptrj;
double m1, m2, t;

// 's + 1' number of joints in chain

d = target_coord();

ptrp = getjoint(s);
for (i = s - 1; i > 0; i--){

p = ptrp->getcoord();

ptrq = getjoint(i);
q = ptrq->getcoord();

// calculate angle 't' between pq and dq using slopes
m1 = (p.y - q.y) / (double) (p.x - q.x);
m2 = (d.y - q.y) / (double) (d.x - q.x);
t = (m1 * m2 != -1.0)? atan((m2 - m1) / (1 + m1 * m2)) : PI / 2;

for (j = i + 1; j <= s; j++){     // for all children
ptrj = getjoint(j);
}
}


the above loop will be run several times inside another loop.

• ### What is your GameDev Story?

In 2019 we are celebrating 20 years of GameDev.net! Share your GameDev Story with us.

• 9
• 34
• 16
• 11
• 10
• ### Forum Statistics

• Total Topics
634122
• Total Posts
3015643
×