如何分隔两个平行的点阵列,使所有相交点消失?

时间:2019-05-05 04:27:47

标签: javascript arrays points line-intersection

我正在从另一个(线)中生成一个点(或线)阵列,并且我需要针对所有点以恒定的方向投影每个点,从本质上创建一条连贯的轨迹。结果是 A行 模仿 B行

之所以这样做,是因为我正在解决一个复杂的问题,我正在让一条龙像我正在开发的其中一款视频游戏的过山车一样乘坐这些线路。

说明

目前,我已经弄清楚了龙骑着这些点等等的碰撞,你明白了! 接下来我需要的是那条路 this代码进入。

我已经知道如何镜像一条线,然后找出交点。

基本上,我的策略是“分割”线并清除交点,但是我不知道该怎么做。

除以下问题外,我唯一的研究使我知道了其他地方: How do I write a method that finds all the intersections in an array of ranges?(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

还有一些我们将需要找到交点的方法,而不仅仅是交点索引!

有关更多代码,请参见this存储库。

视觉效果

您可以看到我是如何分割线以及它过去的样子。 所需操作的视觉表示:

Lines I need to split

看到相交点了吗?那是我们需要分裂或消除的地方!

SplitLines被分割的行


请注意,我在这个问题上工作了大约30分钟。任何帮助将不胜感激:)

0 个答案:

没有答案