Я буду называть их Львом и Козлом. Я предполагаю, что вы выполняете какой-то цикл следующим образом:
while( true )
{
lionPos = moveTowards( goatPos, lionPos, d );
goatPos = someFunction();
}
Если d - константа, то лев преследует козу с постоянной скоростью. Если вы хотите, чтобы козел сбежал с постоянной скоростью, тогда someFunction - это не что иное, как
moveTowards( goatPos, lionPos, d );
Опять же, изменение d изменит скорость. Если вы установите скорость, зависящую от расстояния, вы сможете увидеть интересные симуляции. Попробуйте поставить постоянное значение для Льва, но (1 / R ^ 2) для Козы. Тогда Лев догонит, когда он далеко, но как только он подойдет достаточно близко, Козел убежит быстрее.
Если вы хотите, чтобы Козел разумно убегал от Льва (необязательно прямо в противоположном направлении), есть некоторая интересная литература на этот счет. Одна аккуратная дискуссия: здесь .