Для этого требуется немного визуализации, поэтому извините, если мое объяснение сосет.Нанесение точек на сегмент окружности
Итак, у меня есть центральная точка в 0,0. С этого момента я рисую случайные точки по его окружности в радиусе 350 пикселей (случайное число). Для этого я использую этот код:
var angle = Math.random()*Math.PI*2;
var x = Math.cos(angle)*radius;
var y = Math.sin(angle)*radius;
x+=parent.position.x;
y+=parent.position.y;
parent.position это потому, что каждая точка, которая построена также выступает в качестве центрального узла, который имеет детей, которые действуют как узлы и так далее. Это просто устанавливает положение нового узла относительно позиции его родителя.
Таким образом, этот код отлично работает для центрального узла. Проблема в том, что как только вы отделитесь от центра, вы хотите продолжить движение в определенном направлении, чтобы избежать столкновения большого узла узлов. Итак, в то время как этот код называет точку на окружности, мне нужно иметь возможность нарисовать точку на сегменте окружности. Я думаю, возможно, около трети окружности должны быть доступны. Другое препятствие состоит в том, что это должен быть ПРАВИЛЬНЫЙ сегмент окружности. Если узлы разветвляются вверх, я не хочу, чтобы сегмент был нижней половиной окружности, ветвь должна продолжать двигаться в направлении вверх.
Я могу установить общее направление, основанное на позиции нового родительского узла относительно положения его родителя. Но есть ли у кого-нибудь идеи о том, как использовать эти данные, чтобы уменьшить поле в сегменте в этом направлении?
Сообщите мне, если это не имеет смысла, его трудно объяснить без диаграмм.
Выбор по случайности кажется немного проблемой. –