例如,当我在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.
我有两个代理集.有找到的功能:
我发现手动实现这一点非常困难,特别是在需要三重内部时 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?" 是有问题的
我的目标是找出数组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) 我一直试图使用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的地方.
标题说明了一切,我一直在寻找并找不到任何直截了当的东西.如何用点(x1,y1)和(x2,y2)取一条线并检查它在矩形(xR,yR)之间的交点?我在Line2D包中看到有一些交集方法,但不知道如何设置它.有人能告诉我一个正确的方法来设置它来检查交叉点(碰撞)吗?
使用图表可以更轻松.CaRMetal,攻击!

我有两个2D线段,P和Q.我想找到点Px上P,和Qx上Q,以便dist(Px,Qx)最小化.到现在为止还挺好; 这是一项非常简单的任务.
皱纹现在来了.我想约束Px并且包含它们Qx的行PxQx必须与第三个线段相交C.(可以自由地假设没有原始线段相交,BTW.)
Px且Qx已经恰好满足C交叉条件.C不甚至含有的凸包P和Q.这些是需要检查的微不足道的案例.PxQx必须包含Ca或Cb.这似乎没有干净地减少到线性方程组.PxQx不仅包含端点C,还包含端点P或者Q也包含端点.这些看起来很简单.我担心的是(3)中的情况,因为我没有看到如何在不调用令人不快的高次多项式的情况下获得一个好的封闭形式.当然,我可以在整个过程中投入一个迭代约束优化器,但我希望最大限度地提高性能,并且在近简并情况下的高精度可能很重要.
math geometry intersection mathematical-optimization computational-geometry
我花了几个小时寻找解决方案:我正在用libgdx开发一个小型自上而下的游戏(也许这对我使用的引擎很重要).现在我必须在我的角色(圆圈)和墙壁(矩形)之间实现碰撞检测.如果可以滑动,我希望角色在碰撞时沿着墙壁滑动.让我解释:
- 如果我向上移动45度,我可以与墙的左下角碰撞.
- 如果我与左边碰撞,我想停止x移动并向上移动.如果我离开墙壁,那么我想继续前进.与下侧相同(停止y运动)
- 如果我与角落碰撞,我想停止运动(滑动不可能).
我实际上在做的是检查矩形的左边是否与我的圆相交.然后我检查左边的墙和我的圆圈以及墙的底线和我的圆圈之间的交叉点.取决于哪个交点occuret我设置回我的圆的x/y的possition并设置X/Y速度为0的问题是,大多数倍不是碰撞 BT的重叠 occures.所以底部检查返回true,即使实际上圆圈只会与右边碰撞.在这种情况下,两个交叉点测试都将返回true,我将重置两个速度,就像在Corner碰撞中一样.我怎么解决这个问题?是否有更好的方法来检测碰撞和碰撞的侧面或角落?我不需要在矩形的一侧确切的碰撞点.
编辑: 我不得不说,rects不是平行于x轴旋转.
我发现自己需要返回两个向量的交集大小:
std::vector<int> A_, B_
Run Code Online (Sandbox Code Playgroud)
我不需要相交的值,只需要集合的大小.这个功能需要被调用很多次.这是对(数学)图形/网络进行更大模拟的一部分.
我的工作条件是:
我的第一次尝试,使用一个天真的循环,在下面.但我认为这可能还不够.我假设......由于重复的排序和分配,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,或者不同的容器?
我已经设置线段(未线),(A1, B1),(A2, B2),(A3, B3),其中A,B被结束的线段的点.每个A并B有(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
编辑以下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)