# Geometry/Trigonometry Question

• December 28th, 2010, 11:17 AM
barrett777
Geometry/Trigonometry Question
Hello everyone,

Well this is probably more of a math question than programming, but still I can't get it right and I don't think math forums would be the best place either.

I'm programming a simple 2D tank game for my entertainment.

You can basically consider tanks and bullets to be located at points on an X,Y axis.

I am trying to make an enemy tank shoot my bullets out of the sky. Let's just say that both our bullets travel at the same speed.

So math wise, I am looking for a direction the enemy tank can shoot, that will intersect my bullet's path and collide with my bullet.

My understanding is that if the bullets travel the same speed, the distance between my bullet and the intersection point, and the enemy's bullet and same intersection point, must be the same for the bullets to hit each other, rather than just cross paths.

What I have been trying to do is convert my bullet's path to the format y = mx + b, then find another linear equation that meets the criteria to hit my bullet.

I'm not sure how to do this. I've tried a couple different ways, and neither have worked. One at least shot somewhat close, but my more recent attempt produced weird, fail results.

I've attached a picture that hopefully makes this a lot more clear to understand what I'm trying to find.

Ideally finding the x,y point of intersection to shoot at would be best, but any help finding the line or angle to shoot in would be great.

Ben
• December 28th, 2010, 02:03 PM
goldest
Re: Geometry/Trigonometry Question
The bullet you shot above, just went over my head.

I am feeling lucky that there is something more weird and dangerous than coding. <:-P

Goldest
• December 28th, 2010, 02:31 PM
helloworld922
Re: Geometry/Trigonometry Question
PB = PB1 = PB2 // fundamental definition of "collision"
PB1 = P1 + V1 t // assuming both bullets are fired at the exact same time
PB2 = P2 + V2 t

P1 + V1 t = P2 + V2 t
x1 i + y1 j + xdot1 t i ydot1 t j = x2 i + y2 j + xdot2 t i ydot2 t j
S^2 = xdot1^2 + ydot1^2 = xdot2^2 + ydot2^2 // assuming both bullets travel at the same speed

we have 3 equations and 3 unknowns (xdot2, ydot2, and t):
x1 + xdot1 t - x2 - xdot2 t = 0
y1 + ydot1 t - y2 - ydot2 t = 0
xdot1^2 - xdot2^2 - xdot2^2 - ydot2^2 = 0

(some long boring math)

t = (x1^2 + y1^2 + x2^2 + y2^2 - 2 * (x1 * x2 - y1 * y2)) / 2 / (xdot1 * (x2 - x1) + ydot1 * (y2 - y1))

Rather than go through the trouble of solving for the other two variables, you can find the intersection point PB from the first set of equations, then compute the angle you need to fire at using the intersection point and the location of tank2.
• December 29th, 2010, 11:27 PM
barrett777
Re: Geometry/Trigonometry Question
I'm sorry to say I didn't understand your math, but I've gotten farther along now :)

Here's where I'm at now:

I've made a triangle on a 2D graph.

I know two points on the triangle (the x, y pair).

I know all three angles of the triangle, and all 3 side lengths of the triangle.

How do I find the (x, y) pair for the third point on the triangle?
• December 30th, 2010, 05:48 AM
JosAH
Re: Geometry/Trigonometry Question
Quote:

Originally Posted by helloworld922
(some long boring math)

t = (x1^2 + y1^2 + x2^2 + y2^2 - 2 * (x1 * x2 - y1 * y2)) / 2 / (xdot1 * (x2 - x1) + ydot1 * (y2 - y1))

Rather than go through the trouble of solving for the other two variables, you can find the intersection point PB from the first set of equations, then compute the angle you need to fire at using the intersection point and the location of tank2.

Isn't that too much math? Both bullets travel on the equal sides of an isosceles and meet each other on the line which indicates the direction of the enemby bullet. If T and E are the points of the tank and enemy respectively, find the point in the middle == (T+E)/2. Draw a line perpendicular to the line ET and find the intersection with the line describing the line traveled by the enemy bullet. That'll be the point of impact of both bullets.

kind regards,

Jos