Я бы сказал, что поиск пути - это неправильный термин: обычно он включает в себя поиск правильного маршрута от А до В, и ваша проблема не в том, чтобы найти этот маршрут, а в создании маршрутов, соответствующих вашим целям. Вы сознательно создаете неоптимальные пути, и их качество будет трудно определить количественно. Поэтому я не думаю, что алгоритм поиска с какой-либо эвристикой был бы лучшим решением проблемы. Если у вас есть один обязательный критерий (рабочий путь) и несколько нечетких, неопределенных критериев (естественный и извилистый), лучше всего начать с удовлетворения обязательных требований и попытаться изменить его в соответствии с другими требованиями. Таким образом, у вас всегда есть что-то, что работает.
Я предлагаю, учитывая, что вы, кажется, предпочитаете горизонтальные и вертикальные траектории, поворачивающиеся под прямым углом, начинать с прямой двухсегментной траектории от А до Б. так же легко это сделать самостоятельно). Затем возьмите случайную точку вдоль одного из двух сегментов и одну из двух конечных точек для этого сегмента и переместите этот участок линии параллельно себе на некоторое случайное расстояние. Затем добавьте 2 дополнительных отрезка, чтобы соединить новую позицию линии со старыми точками соединения. Ваш второй пример показывает одну итерацию этого алгоритма: если A равно (0,0), а B равно (5, 7), то вы случайно выбрали 2-й отрезок (вертикальный), конечную точку в (0,5 ) и среднюю точку в (5,5), и передвиньте эту секцию вправо на 3 единицы, прежде чем снова присоединиться к ней.