Direction of normal
I want to make a circle bounce from surfaces when a key is pressed in the way that the ball in N-Ball does, so that its velocity in the direction of the surface's normal becomes a value that has a constant magnitude and its velocity in the direction that is parallel to the surface does not change. This is not a physics engine question, only a mathematical one. How to do it? I am asking this as I can not yet do vector maths well (I know only its basics).
Simple, you just need to subtract out the normal component from the velocity.
Velocity component parallel to the normal:
vNormal = dot(velocity, n)*n
Velocity component perpendicular to the normal:
vTangent = velocity - vNormal
Your desired normal velocity:
vDesired = n*desired
Putting it all together:
vResult = vTangent + vDesired
Which simplifies to:
vResult = velocity + (desired - dot(velocity, n))*n
Velocity component parallel to the normal:
vNormal = dot(velocity, n)*n
Velocity component perpendicular to the normal:
vTangent = velocity - vNormal
Your desired normal velocity:
vDesired = n*desired
Putting it all together:
vResult = vTangent + vDesired
Which simplifies to:
vResult = velocity + (desired - dot(velocity, n))*n
Scott Lembcke - Howling Moon Software
Author of Chipmunk Physics - A fast and simple rigid body physics library in C.
Thanks. Do I need to find the collision surface's normal myself, as Chipmunk does not seem to have a query for it?
You can get collision normals from the cpArbiter struct passed to your collision handler callback. (See http://files.slembcke.net/chipmunk/relea...cpArbiter)
Scott Lembcke - Howling Moon Software
Author of Chipmunk Physics - A fast and simple rigid body physics library in C.
Possibly Related Threads...
| Thread: | Author | Replies: | Views: | Last Post | |
| Smooth acceleration in every direction. | Honey Sharma | 1 | 3,540 |
Aug 16, 2011 01:37 AM Last Post: PoseMotion |
|
| newbie request direction | Teehee | 3 | 5,441 |
Jul 27, 2011 09:57 AM Last Post: AndyKorth |
|
| give direction to sprite | termitis | 9 | 8,635 |
Mar 11, 2011 02:38 PM Last Post: compiler |
|
| Direction formula? | TimMcD | 2 | 4,191 |
Nov 11, 2009 11:42 PM Last Post: TimMcD |
|
| Triangle Normal Calculations | merrill541 | 2 | 2,885 |
Feb 1, 2009 07:06 PM Last Post: merrill541 |
|

