标签: intersection

有点简单的PHP数组交集问题

也许我会疯了,但我可以发誓有一个PHP核心函数,它将两个数组作为参数:

$a = array('1', '3');
$b = array('1'=>'apples', '2'=>'oranges', '3'=>'kiwis');
Run Code Online (Sandbox Code Playgroud)

并执行一个交集,$a检查数组中的值是否与数组中的键发生冲突$b.回归之类的

array('1'=>'apples', '3'=>'kiwis');
Run Code Online (Sandbox Code Playgroud)

这样的功能是否存在(我在文档中遗漏了),还是有一种非常优化的方法来实现同样的功能?

php arrays intersection key

6
推荐指数
1
解决办法
3602
查看次数

如何修复具有自相交的多边形?

有没有办法使用GEOS从多边形中删除自交叉?

geometry intersection geos

6
推荐指数
1
解决办法
7685
查看次数

立方体球体相交测试?

这样做最简单的方法是什么?我在数学上失败了,我在互联网上找到了非常复杂的公式...我希望如果有一些更简单的吗?

我只需要知道一个球体是否与一个立方体重叠,我不在乎它做了哪个点等.

我也希望它能利用这两个形状都是对称的事实.

编辑:立方体在x,y,z轴上直线对齐

c++ intersection

6
推荐指数
2
解决办法
2万
查看次数

高效的算法,用于在C中生成排序数组的n路交集

我需要在C中生成一些排序的整数数组之间的交集.我知道如何找到两个排序数组之间的交集,但我需要为两个以上的数组执行此操作,有效且无需事先了解数组的数量.我可以对最大数量施加合理的限制 - 现在就说十.这些阵列可以是从几个项目到几十万个项目的任何地方,并且绝不一定是相同的长度.

用于生成两个排序数组的交集的伪代码:

while i < m and j < n do:
    if array1[i] < array2[j]:
        increment i
    else if array1[i] > array2[j]: 
        increment j
    else 
        add array1[i] to intersection(array1, array2)
        increment i
        increment j
Run Code Online (Sandbox Code Playgroud)

我正在和C一起工作,我的解释清楚而不是代码.

c arrays intersection sorted

6
推荐指数
1
解决办法
3752
查看次数

文件的交叉点

我有两个大文件(27k行和450k行).他们看起来像:

File1:
1 2 A 5
3 2 B 7
6 3 C 8
...

File2:
4 2 C 5
7 2 B 7
6 8 B 8
7 7 F 9
... 
Run Code Online (Sandbox Code Playgroud)

我想要两个文件中的第三列都在两个文件中的行(排除了带有A和F的注释行):

OUTPUT:
3 2 B 7
6 3 C 8
4 2 C 5
7 2 B 7
6 8 B 8
Run Code Online (Sandbox Code Playgroud)

什么是最好的方式?

unix algorithm intersection file

6
推荐指数
1
解决办法
1138
查看次数

多边形分解算法

有没有人知道一个相对快速的算法,用于将一组多边形分解为不同的重叠和非重叠区域,即给定一组n个多边形,找到它们中的所有不同区域?

例如,输入将是4个表示圆的多边形,如下所示

输出将是表示不同颜色的不同区域的所有多边形.

我可以使用多边形操作编写自己的实现,但算法可能会很慢且耗时.我想知道是否存在针对此类问题的任何优化算法.

algorithm intersection polygon polygons convex-polygon

6
推荐指数
1
解决办法
615
查看次数

用于多边形布尔函数的javascript模块(并集,交集,差异和异或)

我有多边形集.在这个集合中,一些是外部多边形,一些可能(或可能不是)是孔.我不知道在这个阶段哪个是多边形孔.我想计算包含所有多边形的最终多边形,包括孔.

我想到了这种方法:

//'SomeLib'  that has polygon boolean fucntions
var polygonSet = [poly1,poly2,...polyn];

var union, intersection;
var combinedPoly = SomeLib.XOR(polygonSet[0], polygonSet[1]);
for( var i=2; i<polygonSet.length ; i++) {
  combinedPoly = SomeLib.XOR(combinedPoly, polygonSet[i]);
  //or if XOR is not available  
  union = SomeLib.union(combinedPoly, polygonSet[i]);
  intersection = SomeLib.intersection(combinedPoly, polygonSet[i]);
  combinedPoly = union - intersection;
}
Run Code Online (Sandbox Code Playgroud)

所以我对模块的要求是

  1. 只有四个多边形布尔函数
  2. 如果npm模块可用它的好
  3. 作为多边形组合的轻量化将是许多功能之一.我的意思是应用程序大小已经更多,所以寻找轻量级库.
  4. 效率:在我的情况下,集合中的多边形数量可能不高,但多边形中的点数量很大,因此寻找O(k.log(n))而不是O(kn)

我所遇到的图书馆清单以及我理解的一些要点:

javascript geometry svg intersection polygon

6
推荐指数
1
解决办法
1791
查看次数

斯威夫特:有没有一种简单的方法来绘制形状并检测它们是否相交?

有没有一种简单的方法可以在Swift中绘制形状(最好使用Sprite-Kit),然后检测它们是否相交以及它们相交的位置?就像这里是一个相交的形状:

在此输入图像描述

intersection ios sprite-kit swift

6
推荐指数
1
解决办法
2435
查看次数

两列不同维度的numpy数组的交集

我给出了两个不同的numpy数组.第一个是二维数组,看起来像(前十点):

[[  0.           0.        ]
 [ 12.54901961  18.03921569]
 [ 13.7254902   17.64705882]
 [ 14.11764706  17.25490196]
 [ 14.90196078  17.25490196]
 [ 14.50980392  17.64705882]
 [ 14.11764706  17.64705882]
 [ 14.50980392  17.25490196]
 [ 17.64705882  18.03921569]
 [ 21.17647059  34.11764706]]
Run Code Online (Sandbox Code Playgroud)

第二个数组只是一维的,看起来像(前十点):

[ 18.03921569  17.64705882  17.25490196  17.25490196  17.64705882
  17.64705882  17.25490196  17.64705882  21.17647059  22.35294118]
Run Code Online (Sandbox Code Playgroud)

第二个(一维)数组中的值可能出现在第一列中的第一个(二维)数组中.Fe 17.64705882

我想从二维数组中获取一个数组,其中第一列的值与第二个(一维)数组中的值匹配.怎么做?

python arrays axis numpy intersection

6
推荐指数
1
解决办法
729
查看次数

Möller-Trumbore射线交叉最快吗?

对于光线跟踪器项目,我一直在研究处理找到光线和三角形之间交叉的算法(由三个顶点定义).到目前为止我发现的是Möller-Trumbore(MT)算法被普遍使用.

所以我的问题是1)是否有MT的替代方案或算法被认为是计算交叉点的最快方法?2)如果是,MT被证明是最优的还是有人可以想象发明更快的算法?

编辑:我现在看到我的问题与Ray-triangle交叉非常相似

algorithm raytracing intersection linear-algebra

6
推荐指数
2
解决办法
3685
查看次数