I am unsure of a proper title for this post and haven't had luck finding a proper answer. The best way I can describe this is, I have two objects $A$ and $B$ where $B$ should move relative to $A$. To be more specific:

  • The position for $A$ is always locked between $(0, 0)$ and $(W, H)$.
  • Object $B$ should move with $A$ at certain times.
    • Should also maintain its offset from $A$ from when movement began.

For example:

$A = (150, 50), B = (0, 0)$

$A$ moves freely for a while.

Event occurs that makes $B$ move with $A$.

$A = (250, 100), B = (0, 0)$

Offset is $(250, 100)$.

  • If $A$ moves to $(350, 200)$ then $B$ should move to $(100, 100)$.

  • If $A$ moves to $(150, 50)$ then $B$ should move to $(-100, -50)$.

I think the math behind this is:

$$B = A - B$$

But while testing it this causes jumping on $B$ and I'm not sure if the math I came up with is correct at this point. Is my math correct, or should I be doing something differently.


If the tags are incorrect, or additional tags would be better, please edit the post.

  • $\begingroup$ Your $B$ is jumping around because you are updating $B$ with the distance between the previous $B$ and $A$. For example, if $A=B$, you would assign $0$ to $B$ on the next iteration instead of $A$. $\endgroup$
    – John Douma
    Oct 31, 2018 at 20:02

1 Answer 1


Your equation says that $B=\frac{1}{2}A$. What you really want is to calculate the offset $(p,q)=A_0-B_0$ where $A_0$ and $B_0$ are the initial positions.

Then you get that $B_n=A_n-(p,q)$ where $A_n$ and $B_n$ are the new positions.

Using your example with $A_0=(250,100)$ and $B_0=(0,0)$, the offset is $A_0-B_0=A_0=(250,100)$ and $B_n=A_n-(p,q)=(350,200)-(250,100)=(100,100)$.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .