标签: intersection

如何在OCaml中交叉两个列表?

例如,当我在OCaml中有两个列表时

e1 = [3; 4; 5; 6; 7]
Run Code Online (Sandbox Code Playgroud)

e2 = [1; 3; 5; 7; 9]
Run Code Online (Sandbox Code Playgroud)

有没有一种有效的方法来获得这两个列表的交集?即:

[3; 5; 7]
Run Code Online (Sandbox Code Playgroud)

因为我不喜欢在列表e1中扫描列表e1中每个元素的每个元素,因此创建了一个大的订单n ^ 2.

ocaml intersection list

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

NetLogo两个agentsets操作

我有两个代理集.有找到的功能:

  1. 两个(交叉点)中存在的代理的代理集
  2. 代理的代理集,存在于一个而不是另一个中

我发现手动实现这一点非常困难,特别是在需要三重内部时 ask

理想的用法类似于with语法:

let cross set1 and-in set2
let uniq set1 with [color = red] not-in set2
Run Code Online (Sandbox Code Playgroud)

简单的事情,例如"代理集X中的代理A?" 是有问题的

intersection netlogo

9
推荐指数
1
解决办法
2445
查看次数

找到两个数组的交集

我的目标是找出数组a和b的交集值并将它们存储到一个新的数组c中,因此打印输出将为:3,10,4,8.如何将给定值分配给第3个数组c?

 public static void main(String[] args) {
        int a[] = {3, 10, 4, 2, 8};
        int[] b = {10, 4, 12, 3, 23, 1, 8};
        int[] c;
        int i=0;
         for(int f=0;f<a.length;f++){
              for(int k=0;k<b.length;k++){
                    if(a[f]==b[k]){
 //here should be a line that stores equal values of 2 arrays(a,b) into array c
            }
          }
        }
            for (int x=0; x<c.length; x++){
             System.out.println(c[i]);
            }
       }
  }
Run Code Online (Sandbox Code Playgroud)

java arrays intersection

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

多边形交叉线| Python身材匀称

我一直试图使用shapely来找到一条直线和一个多边形的交集,但是我遇到了一些浮点数的问题.

示例代码:

polygon = [(4.0, -2.0), (5.0, -2.0), (4.0, -3.0), (3.0, -3.0), (4.0, -2.0)]
shapely_poly = shapely.geometry.Polygon(polygon)

line = [(4.0, -2.0000000000000004), (2.0, -1.1102230246251565e-15)]
shapely_line = shapely.geometry.LineString(line)

intersection_line = list(shapely_poly.intersection(shapely_line).coords)
print intersection_line
Run Code Online (Sandbox Code Playgroud)

我期望的是两个顶点的列表.

第1点:在多边形内部的点,或者在这种情况下为(4.0,-2.0000000000000004).

第2点:这是[(4.0,-2.0000000000000004),(2.0,-1.1102230246251565e-15)]和[(3.0,-3.0),(4.0,-2.0)]的交集点.

但是,我收到的结果是:

[(4.0, -2.0000000000000004)]
Run Code Online (Sandbox Code Playgroud)

我还检查了我正在看的边缘是否有一个交叉点:

>>> edge = shapely.geometry.LineString([(3.0, -3.0), (4.0, -2.0)])
>>> edge.intersects(shapely_line)
False
Run Code Online (Sandbox Code Playgroud)

如果我用(4.0,-2.000000000000000)替换(4.0,-2.0000000000000004),则边缘交点将评估为True.

有没有人对正在发生的事情或我错过的事情有任何想法?谢谢!

在此输入图像描述

编辑:

我使用了匀称版本1.12和3.3.1,3.3.5,3.3.6,3.3.7的地理位置进行了测试.

如果有人对我如何更新Windows上的地理版本感到好奇:

从GEOS网站下载了geos- [version] .tar.bz2.使用Visual Studio 10 Win64生成器提取文件并在其上运行CMake.打开.sln文件并构建它然后移动生成的geos_c.dll并将其粘贴到Python目录中已经安装好geos_c.dll的地方.

python intersection polygon line shapely

9
推荐指数
1
解决办法
9609
查看次数

如何检查直线和矩形之间的交点?

标题说明了一切,我一直在寻找并找不到任何直截了当的东西.如何用点(x1,y1)和(x2,y2)取一条线并检查它在矩形(xR,yR)之间的交点?我在Line2D包中看到有一些交集方法,但不知道如何设置它.有人能告诉我一个正确的方法来设置它来检查交叉点(碰撞)吗?

java intersection line rectangles collision

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

2d段的最近点,通过第3个2d段

使用图表可以更轻松.CaRMetal,攻击!

问题

我有两个2D线段,PQ.我想找到点PxP,和QxQ,以便dist(Px,Qx)最小化.到现在为止还挺好; 这是一项非常简单的任务.

皱纹现在来了.我想约束Px并且包含它们Qx的行PxQx必须与第三个线段相交C.(可以自由地假设没有原始线段相交,BTW.)

  1. 显然有一种情况是无约束PxQx已经恰好满足C交叉条件.
  2. 还有一个不可行的情况下,如果C不甚至含有的凸包PQ.这些是需要检查的微不足道的案例.
  3. 在其他情况下,该行PxQx必须包含CaCb.这似乎没有干净地减少到线性方程组.
  4. 在最后一组案例中,PxQx不仅包含端点C,还包含端点P或者Q也包含端点.这些看起来很简单.

我担心的是(3)中的情况,因为我没有看到如何在不调用令人不快的高次多项式的情况下获得一个好的封闭形式.当然,我可以在整个过程中投入一个迭代约束优化器,但我希望最大限度地提高性能,并且在近简并情况下的高精度可能很重要.

math geometry intersection mathematical-optimization computational-geometry

9
推荐指数
2
解决办法
467
查看次数

libgdx中的Circle-Rectangle碰撞侧检测

我花了几个小时寻找解决方案:我正在用libgdx开发一个小型自上而下的游戏(也许这对我使用的引擎很重要).现在我必须在我的角色(圆圈)和墙壁(矩形)之间实现碰撞检测.如果可以滑动,我希望角色在碰撞时沿着墙壁滑动.让我解释:

  • 如果我向上移动45度,我可以与墙的左下角碰撞.
  • 如果我与左边碰撞,我想停止x移动并向上移动.如果我离开墙壁,那么我想继续前进.与下侧相同(停止y运动)
  • 如果我与角落碰撞,我想停止运动(滑动不可能).

我实际上在做的是检查矩形的左边是否与我的圆相交.然后我检查左边的墙和我的圆圈以及墙的底线和我的圆圈之间的交叉点.取决于哪个交点occuret我设置回我的圆的x/y的possition并设置X/Y速度为0的问题是,大多数倍不是碰撞 BT的重叠 occures.所以底部检查返回true,即使实际上圆圈只会与右边碰撞.在这种情况下,两个交叉点测试都将返回true,我将重置两个速度,就像在Corner碰撞中一样.我怎么解决这个问题?是否有更好的方法来检测碰撞和碰撞的侧面或角落?我不需要在矩形的一侧确切的碰撞点.

编辑: 我不得不说,rects不是平行于x轴旋转.

java intersection collision-detection libgdx

9
推荐指数
1
解决办法
8572
查看次数

两个向量的集合交集的有效或快速大小

我发现自己需要返回两个向量的交集大小:

std::vector<int> A_, B_
Run Code Online (Sandbox Code Playgroud)

我不需要相交的值,只需要集合的大小.这个功能需要被调用很多次.这是对(数学)图形/网络进行更大模拟的一部分.

我的工作条件是:

  • 容器是载体.改变它们是纯粹的痛苦,但如果获得保证肯定会这样做.
  • A_和B_的大小具有~100的上限.但往往要小得多.
  • A_和B_的元素表示取自{1,2,...,M}的样本,其中M> 10,000.
  • 通常,A_和B_具有相似但不相等的大小.
  • 两个向量都是无序的.
  • 作为"更大模拟"的一部分,A_和B_的内容发生变化.
  • 每个向量仅包含唯一元素,即不重复.

我的第一次尝试,使用一个天真的循环,在下面.但我认为这可能还不够.我假设......由于重复的排序和分配,std :: set_intersection将过于繁重.

   int vec_intersect(const std::vector<int>& A_, const std::vector<int>& B_) {

      int c_count=0;

  for(std::vector<int>::const_iterator it = A_.begin(); it != A_.end(); ++it){
     for(std::vector<int>::const_iterator itb = B_.begin(); itb != B_.end(); ++itb){

      if(*it==*itb) ++c_count;
     }
  }

  return c_count;
}
Run Code Online (Sandbox Code Playgroud)

鉴于我的上述条件,我还能如何实现这一点以获得速度,相对容易?我应该考虑哈希表还是使用排序和STL,或者不同的容器?

c++ performance stl intersection vector

9
推荐指数
1
解决办法
4208
查看次数

找到点和线段之间的最短距离(不是线)

我已经设置线段(未线),(A1, B1),(A2, B2),(A3, B3),其中A,B被结束的线段的点.每个AB(x,y)坐标.

问: 我想知道之间的最短距离point O,并line segments如所示所示中的代码行实施.我真正理解的代码是伪代码或Python.

代码:我尝试使用此代码解决问题,遗憾的是,它无法正常工作.

def dist(A, B, O):
    A_ = complex(*A)
    B_ = complex(*B)
    O_= complex(*O)
    OA = O_ - A_
    OB = O_ - B_
    return min(OA, OB)
# coordinates are given
A1, B1 = [1, 8], [6,4]
A2, B2 = [3,1], [5,2]
A3, B3 = [2,3], [2, 1] …
Run Code Online (Sandbox Code Playgroud)

python numpy intersection line-intersection euclidean-distance

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

JS - 找出隐藏的DOM元素的可见百分比

编辑以下HTML和CSS只是一个示例,真正的用例涉及复杂的DOM,并且应该足够通用以在不同的网页上工作.唯一有效的假设是所有元素都是矩形的.


鉴于以下内容:

HTML

<div class="a" id="a">
A
</div>
<div class="b">
B
</div>
<div class="c">
  C
  <div class="d">
  D
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.a,.b,.c,.d{
  border: solid 1px black;
  opacity: 0.5;
  font-family: arial;
  position: absolute;
  font-size: 20px;
}

.a{
  width:300px;
  height:250px;
  top:30px;
  left:20px;
  background:green;
}

.b{
  width:300px;
  height:145px;
  top:10px;
  left:20px;
  background:blue;
}
.c{
  width:150px;
  height:300px;
  top:30px;
  left:60px;
  background:red;
}
.d{
  margin:10px;
  background:yellow;
  width:100px;
  height:200px
}
Run Code Online (Sandbox Code Playgroud)

产生以下结果:
在此输入图像描述


我试图检测未被其他元素遮挡的"A"DIV的百分比,IE:给定示例中的25%.

我写了下面的JS(小提琴),它扫描"A"DIV的矩形区域并收集模糊元素.

let el = document.getElementById("a");
let rect = el.getBoundingClientRect();
let right …
Run Code Online (Sandbox Code Playgroud)

html javascript css intersection

9
推荐指数
1
解决办法
237
查看次数