Fixed relations:

xp=x+Math.sqrt(dx2*dx2+dy2*dy2)*Math.cos(Math.atan2(dy2,dx2)-Math.atan2(dy1,dx1))*Math.cos(Math.atan2(dy1,dx1));

yp=y+Math.sqrt(dx2*dx2+dy2*dy2)*Math.cos(Math.atan2(dy2,dx2)-Math.atan2(dy1,dx1))*Math.sin(Math.atan2(dy1,dx1));

[/quote]

The above method fixed xp and yp at any momentum, because you tell EJS to do so.

If you want xp and yp controlled by more than one method, you could move the above code to a function

[code]

public void drag(){

xp=x+Math.sqrt(dx2*dx2+dy2*dy2)*Math.cos(Math.atan2(dy2,dx2)-Math.atan2(dy1,dx1))*Math.cos(Math.atan2(dy1,dx1));

yp=y+Math.sqrt(dx2*dx2+dy2*dy2)*Math.cos(Math.atan2(dy2,dx2)-Math.atan2(dy1,dx1))*Math.sin(Math.atan2(dy1,dx1));

}

[/code]

and add drag() to [b]action[/b] property when dx1,dy1 or dx2,dy2 arrows are dragged.

[quote]

x = F*Math.cos(cta) and size y = F*Math.sin(cta),

[/quote]

When you set the above property to x,y : you tell EJS (program) x,y were determined by F and cta only.

So it can not be dragged.

move the above code to another function

[code]

function changeXY(){

x = F*Math.cos(cta);

y = F*Math.sin(cta);

}

[/code]

and add changeXY() to action property when F's or cta's control property.

Computer only do what you tell it to do. It will not do more and it will not do less, either.