Вот моя проблема:
У меня есть две случайные точки (x, y) и (x2, y2). Я хотел бы провести «случайный шаг» или фрактальную линию между ними. Я создал ситуацию, в которой расстояние и направление шага генерируются случайным образом на основе матрицы вероятностей. Однако, оставляя это только к направлению этой матрицы, у линии будет случайная конечная точка, которую невозможно предопределить заранее. Поэтому я попытался установить границы для моей линии, где - если точка падает - местоположение корректируется соответствующим образом. Эти границы не работают.
В идеале, мои границы - это круг, созданный каждой случайной точкой на противоположных концах области. Я пробовал следующее.
Я настроил цикл, который будет перебирать каждую точку x линии, используя переменную i , которая начинается с меньшего из x и x2 и движется в направлении большего.
Я установил переменную j , к которой будет добавлен случайный шаг, и инициализировал ее эквивалентным значением y для меньшего значения x (если x1 больше, установлено значение y1 еще установлен на х).
Я установил переменную, которая содержит наклон теоретической прямой линии между x, y и x1, y1.
Я установил матрицу вероятностей, которая принимает переменную mod и устанавливает для нее значение в диапазоне от 8 до -8.
Я установил проверки, чтобы запретить формирование линии за пределами данной плоскости.
Я настроил проверку, чтобы определить, является ли переменная i на единицу меньше, чем большее из x и x2. Если это так, переменная j устанавливается на значение y этого значения x;
Именно в этот момент мне не удается найти подходящий алгоритм для настройки окончательной проверки. Вот что я хотел бы сделать алгоритм:
A. Я хотел бы, чтобы он мог, учитывая случайное значение x между x и x1, определить, находится ли текущая переменная j , добавленная к текущей переменной mod , вне сгенерированного круга по двум вышеупомянутым пунктам (см. второй абзац). Если это не так, добавьте мод в переменную j и увеличьте цикл.
B. Если эта точка выходит за границы, я бы хотел, чтобы направление шага было изменено на обратное (например, от -6 до 6 и от 2 до -2), и такая же проверка должна быть сделана снова.
C. Если добавление в любом направлении выведет его за границы (что, скорее всего, произойдет около дальнего конца круга, где границы сужают больше всего), я хотел бы иметь возможность проходить через цикл, который проверяет каждое значение и его обратное начиная с 0 и переходя к последовательно большим значениям, пока не будет определено работоспособное значение.
Я надеюсь, что вы, опытные математики и программисты, видите в этом непреодолимую проблему. Это поставило меня в тупик на три недели, и у меня кончились идеи.