# Making a formula that finds the horizontal and vertical distance between two points that change with a new angle.

I am making a Scratch 3.0 game. The shooter sprite is holding a gun slightly off-centre (see images), and I need the bullet to go to the end of the barrel of the gun before travelling forward (as so it would appear the bullet it leaving the gun). The issue is, to do this, I need to find the X and Y distance of the end of the barrel from the centre of the shooter sprite (Scratch doesn't let you use diagonal distances 😡). The X and Y distances change as the sprite rotates.

I know if the shooter sprite is facing 90º (right angle), the X distance to the gun is 105 pixels, and the Y distance is 45 pixels.

The computer always knows what direction the shooter sprite is facing.

What about the distances for all the other angles the shooter sprite is facing? Do I need a special formula?

Sounds like the length of the gun is $$L = \sqrt{105^2+45^2} = 15 \sqrt{58} \approx 114.2366 \text{ pixels}$$ and now if you are pointing to an angle $$a$$, your distances are $$X = L\cos a \quad \text{and} \quad Y = L\sin a.$$

• I got the first bit, though I'm still trying to wrap my head around the second part. Does that mean if he is facing 45º, the offset is approximately X:81px, Y:81px? (This link may help: scratch.mit.edu/projects/304320659) – Kieran Ryan Apr 24 at 4:32
• I've added my calculations for 45º facing in the original post above. – Kieran Ryan Apr 24 at 4:39
• Okay, I've tried your formula (I understand how it works now), though it cannot calculate X or Y at 90º. I.e: 114.2366 x cos(90) = 0 (this obviously isn't the case) – Kieran Ryan Apr 24 at 5:00
• @KieranRyan at $90^\circ$ there should be no horizontal distance, just pure vertical, no? – gt6989b Apr 24 at 17:35
• Looking at the first image, you can see a horizontal offset of 105 pixels, as the character is holding the gun out from his centre. – Kieran Ryan Apr 24 at 21:04