Как я могу разделить 2 массива точек, которые параллельны, так что все пересечения исчезают? - PullRequest
0 голосов
/ 05 мая 2019

Я генерирую один массив точек (или линию) из другого (линии), и мне нужно проецировать каждую точку в постоянном направлении для всех точек, по существу создавая связную дорожку.В результате строка A имитирует строка B .

Причина, по которой я это делаю, заключается в том, что я решаю сложную проблему, когда заставляю дракона ездить по этим линиям, как на американских горках для одной из моих видеоигр, над которыми я работаю.

Описания

В настоящее время я выяснил столкновение дракона с этими точками и т. Д., И т. Д., Вы получите это!Все, что мне нужно, это трек, по которому этот код поступает.

Я дошел до того, что узнал, как отразить линию, а затем выяснил точки пересечения.

В основном моя стратегия состоит в том, чтобы "разбить" линии и очистить точки пересечения, но я не знаю, как это сделать.

Мое единственное исследование привело меня куда-то, кроме этого вопроса: Какнаписать метод, который находит все пересечения в массиве диапазонов? (Java)

Код

Я уже знаю, как сдвигать строки:

function createPoints(points, angle, offset)
{
    var newPoints = [];

    for(var i = 0; i < points.length; i++)
    {
        newPoints.push({
            x: points[i].x + Math.cos(angle) * offset,
            y: points[i].y + Math.sin(angle) * offset,
        });
    }

    return newPoints;
}

Это исправляет / разбивает пересечения:

function fixIntersections(points, points2)
{
    var intersections = getIntersectionsIndexes(points, points2);

        // No Idea what goes here
        // but where need to split Points and points2 based our intersections data.

    console.log(intersections);
}

Остальная часть этого файла находится здесь: https://github.com/prolightHub/ParallelLines/blob/master/js/intersections.js

Также как нам нужно найти точку пересечения, а нетолько индексы пересечения!

Дополнительный код см. в этом хранилище.

Визуальные элементы

Вы можете видеть, как я разбиваю линии и что этораньше был.Визуальное представление того, что нужно сделать:

Линии, которые мне нужно разделить

Видите точку пересечения?Вот где нам нужно разбить или устранить!

SplitLines Линии, которые были разбиты


Обратите внимание, что я работал над этим вопросом около 30 минут.Любая помощь будет оценена :) 1057 *

...