| **confused about parenting (!) toWorld doesn't fix things**
on Feb 21, 2017 at 9:38:29 pm |

hi, I have 3 nulls named P1,P2 and P3 evenly distributed on my composition.

P3 is parented to P2. P2 is parented to P1. P1 has no parent. All the nulls have scale 100%. All have anchorPoint [0,0].

So I made a fn to calculate distances between them and although the nulls are evenly spaced on screen the two calculated distances are different by a factor of about 7. Using toWorld makes no difference. Changing from position to anchorPoint makes no difference.

If I move P3 over P2 it's position in the timeline goes to zero but it's distance calculated by the fn goes up to about right. If I unparent P2 from P1 this too causes the distance to go up and again looks like it becomes right.

Can anyone explain how to correctly get the world position of a chain of parented nulls in CS4?

Thanks

`//this gives wildly wrong results (400 and 73)`

D12= getLength(p1.transform.position,toWorld(p2.transform.position));

D23= getLength(toWorld(p2.transform.position),toWorld(p3.transform.position));

//shouldn't have to do this since P1 is an orphan? and it isn't any better

D12= getLength(toWorld(p1.transform.position),toWorld(p2.transform.position));

//this gives zero for the distance

D23= getLength(toWorld(p2.transform.anchorPoint),toWorld(p3.transform.anchorPoint));

I've tested this...

function getLength(p1,p2) {

dx=p1[0] - p2[0];

dy=p1[1] - p2[1];

l=Math.sqrt(dx*dx+dy*dy);

return l;

}

| **Re: confused about parenting (!) toWorld doesn't fix things** on Feb 21, 2017 at 9:56:49 pm |

OK, so I read Dan Ebberts cool steam engine page and I think I figured this out.

I need the distance from P2 to p3 but P2 is parented to P2 so it's in P2 coordinate space. SOOO the correct distance is just length([0,0] , P3.transform.position). Looks good so far...

| **Re: confused about parenting (!) toWorld doesn't fix things** on Feb 21, 2017 at 10:39:46 pm |

This should work without regard to parenting:

p1 = thisComp.layer("P1");

p2 = thisComp.layer("P2");

p3 = thisComp.layer("P3");

d12 = length(p1.toWorld(p1.anchorPoint),p2.toWorld(p2.anchorPoint));

d23 = length(p2.toWorld(p2.anchorPoint),p3.toWorld(p3.anchorPoint));

Dan