jjzjj

Intersection

全部标签

java - 如何计算两个以上 HashSet 之间的交集?

考虑到下面的代码以及4个HashSet在别处填充的事实。我的目标是包含所有4个HashSet中共有的所有元素。我的问题是,首先,我做得对吗?其次,如果我做对了,还有更好的方法吗?如果没有,那么我有什么解决方案来解决这个问题?staticSetone=newHashSet();staticSettwo=newHashSet();staticSetthree=newHashSet();staticSetfour=newHashSet();privatestaticvoidcreateIntersectionQrels(){ArrayListtemp=newArrayList();Setin

Java 游戏 Hitbox 检测和圆角

我正在使用Java、swing开发一款简单的2D游戏,没有框架。我有一个矩形播放器,用户可以四处移动。map上有一些玩家无法通过的障碍。我通过为玩家和每个障碍物及其边界制作一个新的矩形对象来做到这一点。但我不确定这是否是正确的方法。它有效,但玩家的Action并不是真正的用户友好。如果玩家想要通过两个障碍,他们必须在完美的坐标上才能通过。用矩形对象检查玩家和障碍物之间的交点是个好主意还是我应该用其他方法来做?第二个问题:我想用相同的碰撞框替换矩形碰撞框,但圆角让玩家可以更轻松地通过。这就是游戏启用碰撞箱后的样子。检查玩家和障碍物是否相交的代码:for(Playerp:this.getP

java - Guava Sets.intersection 性能不佳

我今天在生产中遇到了一个奇怪的问题。虽然我喜欢Guava,但我遇到了一个用例,其中Guava的Sets.intersection()表现非常糟糕。我写了一个示例代码:Setcache=newHashSet();for(longi=0;ikeys=newHashSet();for(longi=0;ifoundKeys=newHashSet();for(Longkey:keys){if(cache.contains(key)){foundKeys.add(key);}}System.out.println("Javasearch:"+(System.currentTimeMillis()-

java - 在 O( (n+s) log n) 中计算圆交点

我正在尝试弄清楚如何设计一种算法来完成这项具有O((n+s)logn)复杂度的任务。s是交叉点的数量。我试过在互联网上搜索,但找不到任何东西。无论如何,我意识到拥有良好的数据结构是关键。我在java中使用红黑树实现:TreeMap。我还使用著名的(?)扫描线算法来帮助我处理我的问题。让我先解释一下我的设置。我有一个调度程序。这是一个PriorityQueue,我的圈子根据最左边的坐标排序(升序)。scheduler.next()基本上轮询PriorityQueue,返回下一个最左边的圆圈。publicCirclenext(){returnthis.pq.poll();}我这里还有一个包

java - java中两个不同对象列表的交集

我有两个具有唯一ID的不同字段的Pojo类。我想执行两个交集List和List.什么是最好的方法。一是我可以简单地迭代两次,但复杂度n2太高了。有更好的方法吗?我可以用比较器来做吗?ClassA{Id,Name,DOB}ClassB{id,aid,location}我有A的列表和B的列表现在想获取A的列表以及在B中的位置 最佳答案 ApacheCommonsCollections有一个方法可以做到这一点:CollectionUtils.intersection.但是,它不使用泛型。还有这个问题:Listintersectioninj

java - 我如何在 Java 中找到两个数组的交集?

尝试找到2个数组的交集a和b并将其存储到新数组c.预期结果:数组c,值为:3、10、4、8。publicstaticvoidmain(String[]args){int[]a={3,10,4,2,8};int[]b={10,4,12,3,23,1,8};int[]c;inti=0;for(intf=0;f 最佳答案 这应该是一种简单的方法。inta[]={3,10,4,2,8};int[]b={10,4,12,3,23,1,8};ListaList=Arrays.asList(a);ListbList=Arrays.asList(b

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

标题说明了一切,我一直在搜索,找不到任何直截了当的东西。我如何用点(x1,y1)&(x2,y2)画一条线并检查它在矩形(xR,yR)之间的交点?我在Line2D包中看到有一些相交方法,但不确定如何设置它们。有人可以告诉我正确的设置方法来检查交叉路口(碰撞)吗? 最佳答案 使用2D图形API中的可用类。Rectangler1=newRectangle(100,100,100,100);Line2Dl1=newLine2D.Float(0,200,200,0);System.out.println("l1.intsects(r1)="+

c++ - 轮廓和矩形 OPENcv c++ 之间的交集

矩形在两点处与完整轮廓相交。我怎样才能找到矩形和等高线轮廓之间的这些交点。我可以将两个图像加在一起并寻找最大值,但我知道矩形顶点是如何存储的,因为我需要一个用一组点填充的线型vector谢谢 最佳答案 如果您确定矩形仅在2个点与形状交叉,则可以遍历轮廓点,并检查这些点是否在矩形边界内。std::vectorshape;//computedwithFindContourscv::RectmyRect;//whateverconstintNUMPOINTS=2;intfound=0;for(std::vector::iteratorit

c++ - 我的交集检查算法有什么问题?

我知道有很多网站都介绍了如何检查两条线的交点,但我发现为这样一个简单的数学任务复制和粘贴代码非常无聊。我越让我沮丧的是我无法让我的代码工作。我知道“我的代码有什么问题?”的问题。很愚蠢,但我不知道我的数学/代码到底出了什么问题,我的代码也有很好的文档记录(除了公认的错误变量命名),所以我想应该有人对它背后的数学感兴趣:boolsegment::checkforIntersection(QPointFa,QPointFb){//line1:a+bx,line2:c+dx,notethataandcarecalledoffsetandbxanddxarecalledgradientsint

c++ - 使用非捕获 lambda 作为可变参数模板函数的函数指针参数给出 "no matching function call"

我目前正在尝试为ecs编写“foreachwith”。templatevoidforeach(void(*func)(Entitye,T...args)){std::vectorintersection;//...Findallentitieswithallthetypesfor(size_ti=0;i(intersection[i])...);}它与函数参数配合得很好voidfoo(Entitye,inti){setComp(e,(int)e);}foreach(foo);//Worksasexpected但不能像lambda那样复制和粘贴相同的函数foreach(//eveniff