No I dont think I can agree here, it is no good to have an engine cluttered with lots of trivial functions that the user can easily program himself in 2 or 3 lines of code.

vec_diff(temp,target.x,p.x);
vec_normalize(temp,speed*time_step);
vec_add(p.x,temp);

there's your attractor.