QVector ComputeJumpPointArrival( QVector pos, std::string origin, std::string destination )
{
    QVector finish = SystemLocation( destination );
    QVector start  = SystemLocation( origin );
    QVector dir    = finish-start;
    if ( dir.MagnitudeSquared() ) {
        dir.Normalize();
        dir = -dir;
        pos = -pos;
        pos.Normalize();
        if ( pos.MagnitudeSquared() ) pos.Normalize();
        return (dir*.5+pos*.125)*howFarToJump();
    }
    return QVector( 0, 0, 0 );
}
float globQuerySphere( QVector start, QVector end, QVector pos, float radius )
{
    QVector st = start-pos;
    if (st.MagnitudeSquared() < radius*radius)
        return 1.0e-6f;
    return globQueryShell( st, end-start, radius );
}