Perpendicularity of a normal and a velocity?
Posted
by
Milo
on Game Development
See other posts from Game Development
or by Milo
Published on 2012-11-20T20:14:14Z
Indexed on
2012/11/21
5:22 UTC
Read the original article
Hit count: 473
I'm trying to fake angular velocity on my vehicle when it hits a wall by getting the dot product of the normal of the edge the car is hitting and the vehicle's velocity:
Vector2D normVel = new Vector2D();
normVel.equals(vehicle.getVelocity());
normVel.normalize();
float dot = normVel.dot(outNorm);
dot = -dot;
vehicle.setAngularVelocity(vehicle.getAngularVelocity() +
(dot * vehicle.getVelocity().length() * 0.01f));
outNorm is the normal of the wall.
The problem is it only works half the time. It seems no matter what, the car always goes clockwise.
If the car should head clockwise:
--------------------------------------
/
/
I want the angular velocity to be positive, otherwise if it needs to go CCW:
--------------------------------------
\
\
Then the angular velocity should be negative...
What should I change to achieve this?
Thanks
Hmmm...
Im not sure why this is not working...
for(int i = 0; i < buildings.size(); ++i)
{
e = buildings.get(i);
ArrayList<Vector2D> colPts = vehicle.getRect().getCollsionPoints(e.getRect());
float dist = OBB2D.collisionResponse(vehicle.getRect(), e.getRect(), outNorm);
for(int u = 0; u < colPts.size(); ++u)
{
Vector2D p = colPts.get(u).subtract(vehicle.getRect().getCenter());
vehicle.setTorque(vehicle.getTorque() + p.cross(outNorm));
}
© Game Development or respective owner