How do I find the coordinate of point and angle value on circle sprite which placed on opposite side of sprite from a touch point and the center point of the sprite?

I know A position, B position and sprite circle size. How do I calculate the position of C? and the angle it is around the sprite circle?

enter image description here


Calculate a vector from B to A, normalize it (divide by the vector's length), then multiply by the circle size:

vx = A.x - B.x
vy = A.y - B.y
length = sqrt(vx*vx + vy*vy)
C.x = vx / length * size + A.x
C.y = vy / length * size + A.y

For the angle you can use the atan2 function, if your language has it.

  • 2
    \$\begingroup\$ Remember to add A's position back to C to get the actual position. This calculates the position of C relative to A. (Also might as well update the code to use A and B instead of just x, x1, y, y1, just to make things clear). \$\endgroup\$
    – MichaelHouse
    Jul 15 '14 at 0:37
  • \$\begingroup\$ @Byte56 thanks, it help me. Sergio big thanks. about atan2, please do you can say what Y and X i need put to atan2(y,x) method? \$\endgroup\$
    – Snake22
    Jul 15 '14 at 1:30

to complete the answer:

angle = atan2((C-A).y, (C-A).x) + PI/2;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.