improved suckiness of scoops

git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@356 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
Giles Williams 2006-03-22 19:11:02 +00:00
parent 90036c01bf
commit 4938264869

View File

@ -2135,17 +2135,26 @@ BOOL ship_canCollide (ShipEntity* ship)
desired_speed = 0.0;
desired_range = collision_radius;
destination = [hauler absoluteTractorPosition];
// adjust for difference in velocity
// adjust for difference in velocity (spring rule)
Vector dv = vector_between( [self getVelocity], [hauler getVelocity]);
velocity.x += delta_t * dv.x * 0.25 * tf;
velocity.y += delta_t * dv.y * 0.25 * tf;
velocity.z += delta_t * dv.z * 0.25 * tf;
// force is proportional to distance
// acceleration = force / mass
// force proportional to distance (spring rule)
Vector dp = vector_between( position, destination);
velocity.x += delta_t * dp.x * tf;
velocity.y += delta_t * dp.y * tf;
velocity.z += delta_t * dp.z * tf;
// force inversely proportional to distance
GLfloat d2 = magnitude2(dp);
if (d2 > 0.0)
{
velocity.x += delta_t * dp.x * tf / d2;
velocity.y += delta_t * dp.y * tf / d2;
velocity.z += delta_t * dp.z * tf / d2;
}
thrust = 10.0; // used to damp velocity
if (status == STATUS_BEING_SCOOPED)
{