Understanding Seek Steering Behavior in Autonomous Characters

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 9K views
Metro_Mystery
Messages
9
Reaction score
0

Homework Statement



I'm having trouble understanding the physics equations related to Steering Behaviors For Autonomous Characters (present in the book "Programming Game AI by example").

For those that don't know- Seek is a kind of behavior whereby an object with a given mass, current position & velocity attemps to seek to a target position.

Homework Equations



In the book, Mat Buckland calculates Seek like so (in Pseudocode)

def Seek()
DesiredVelocity = Normalize(TargetPos - VehiclePos) * VehicleMaxSpeed
SteeringForce = DesiredVelocity - VehicleVelocity
return SteeringForce

The Attempt at a Solution



Seek is stated, in the book- to return a steering force, which is "the force required, when added to the agents current velocity vector, gives the desired velocity.

How does the subtraction of two velocity vectors suddenly become a force?

My heads in a spin- any help is greatly appreciated!
 
Physics news on Phys.org
If you subtract the two velocity vectors, then you get a vector which points in direction you want the force to point. Formally, you would need to multiply by something (a constant, possibly) that has dimensions of mass over time to get a force. But the computer doesn't care about actual units, and the constant might as well be 1. So that's why a difference in velocities could be a force, or acceleration. A realistic implementation of that AI would probably need to have a constant to scale the SteeringForce to give good behavior, but that's something that would need to be experimented with.
 
Thanks for the great answer, I understand now.

Also- what exactly is the point of scaling the desired velocity vector to max speed? From what I can see- it will affect the direction as well as the magnitude of the output vector.
 
Last edited: