# Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions Layer width as it moves on Z axis

• # Layer width as it moves on Z axis

Posted by on March 20, 2024 at 1:33 pm

I’ve made this example to simplify the original situation; The red circle has the following expression in its position:

a = thisComp.layer(“CIRCLE-BLUE”);

b = a.toWorld(a.transform.anchorPoint);

c = thisComp.layer(“CIRCLE-BLUE”).content(“Ellipse 1”).content(“Ellipse Path 1”).size;

[ (b[0]+c[0]/2) , b[1] ]

It is using the blue circle size to be parented to the right corner of the blue circle.
But the blue circle is a 3D layer, and when I move it on the Z axis, the red circle can’t calculate its new position based on the blue circle’s size referent to the comp.

Is there a way to define blue circle’s width in real time as it moves on the Z axis?

3 Members · 3 Replies
• 3 Replies
• ### Dan Ebberts

March 20, 2024 at 3:22 pm

I think it would be more like this (assuming your anchor point is centered):

`a = thisComp.layer("CIRCLE-BLUE");b = a.content("Ellipse 1").content("Ellipse Path 1").size;c = a.toComp(a.anchorPoint + [b[0]/2,0]);`
• ### Saulo Dal pozzo

March 20, 2024 at 5:33 pm

I knew you would be the one to solve this! I had to adapt it a bit to fit my original plan, which was to have a line snap to the corner of an ellipse as if it was touching it. I’ll upload the results, this is the finished line of expression:

// LAYERS

posP = thisComp.layer(“LINHA: Path 1 [1.1.2]”).transform.position;

bola = thisComp.layer(“BOLA-AZUL”);

diametro = thisComp.layer(“BOLA-AZUL”).content(“Ellipse 1”).content(“Ellipse Path 1”).size;

posB = bola.toComp(bola.anchorPoint);

pontaB = bola.toComp(bola.anchorPoint + [diametro[0]/2,0]);

posB3D = [posB[0],posB[1]];

// SPECULATIVE

raio = sub(pontaB,posB)[0];

c = sub(posB, posP);

modc = length(posP,posB3D);

alfa = -Math.acos(c[0]/modc);

theta = Math.asin(raio/modc);

beta = alfa-theta;

modv = Math.sqrt(Math.pow(modc,2)+Math.pow(raio,2));

v = [Math.cos(beta)*modv, Math.sin(beta)*modv];