Hello,
I am currently making a pixel based 2D table tennis game where I need to to find the exact point the ball hits the table.
For simplicity reasons I have't programmed the spin of the ball yet.
Can anyone help me with formulas or something else helpful?
Thanks!
Pixel-based collision detection with sphere
Started by Hairie, Sep 28 2012 07:07 AM
2 replies to this topic
Sponsor:
#2 Members - Reputation: 106
Posted 28 September 2012 - 10:33 AM
You can get the contact point using this formula:
Pc = C - n[(C-P)dot(n)]
Pc: contact point
C: ball's center
n: the unit vector normal to the table and pointing upward
P: any point on the surface of the table
The quantity [(C-P)dot(n)] is the closest distance from the ball's center to the table. If this distance is greater than the ball's radius, there is no collision..
Pc = C - n[(C-P)dot(n)]
Pc: contact point
C: ball's center
n: the unit vector normal to the table and pointing upward
P: any point on the surface of the table
The quantity [(C-P)dot(n)] is the closest distance from the ball's center to the table. If this distance is greater than the ball's radius, there is no collision..
Edited by m_a_s_gp, 28 September 2012 - 10:34 AM.
#3 Members - Reputation: 631
Posted 28 September 2012 - 01:47 PM
If you want an analytic solution, neglecting friction:
y(x) = y0 + vy*(x-x0)/vx - 0.5 * g * [(x-x0)/vx]^2
vx,vy : initial speed in x and y directions
y0,x0 : initial position
g : acceleration due to gravity
impact is when y(x) = h + r
where h is the height of the table and r the radius of the ball
y(x) = y0 + vy*(x-x0)/vx - 0.5 * g * [(x-x0)/vx]^2
vx,vy : initial speed in x and y directions
y0,x0 : initial position
g : acceleration due to gravity
impact is when y(x) = h + r
where h is the height of the table and r the radius of the ball






