我认为这个问题之前已经被问到,但我还没有能够推断出一个明确的答案.我试图找到最好的方式(或一种方式)来交叉两个完全不同的可相关集合.
A类:
B级:
..我想相交List<A>与List<B>上z2 == j6.
可以这样做吗?
我需要在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一起工作,我的解释清楚而不是代码.
哪一个更快?一个"更好"吗?基本上我会有两套,我想最终从两个列表中得到一个匹配.所以我觉得for循环更像是:
for object in set:
if object in other_set:
return object
Run Code Online (Sandbox Code Playgroud)
就像我说的 - 我只需要一场比赛,但我不确定如何intersection()处理,所以我不知道它是否更好.此外,如果它有帮助,这other_set是一个近100,000个组件的列表,set可能是几百,最多几千.
class Item(models.Model):
...
class ItemSet(models.Model):
items = models.ManyToManyField(Item, related_name="itemsets")
Run Code Online (Sandbox Code Playgroud)
我有一个ItemSets列表.我想找到所有Item对象,其中Item对象位于至少一个ItemSet对象的"items"M2M字段中.
我怎样才能做到这一点?
PS这是我尝试过的,但无济于事:
itemset_list = [itemset1, itemset2, itemset3]
items = Item.objects.filter(itemsets__in=itemset_list)
Run Code Online (Sandbox Code Playgroud) 我正在用Python编写一个基本的2D形状库(主要用于操作SVG绘图),我对如何有效地计算两个椭圆的交点感到茫然.
每个椭圆由以下变量(所有浮点数)定义:
c: center point (x, y)
hradius: "horizontal" radius
vradius: "vertical" radius
phi: rotation from coordinate system's x-axis to ellipse's horizontal axis
Run Code Online (Sandbox Code Playgroud)
忽略椭圆相同时,可能有0到4个交点(没有交点,切线,部分重叠,部分重叠和内部切线,并且完全重叠).
我发现了一些潜在的解决方案:
关于如何计算交叉点的任何建议?速度(它可能需要计算很多交叉点)和优雅是主要标准.代码会很棒,但即使是一个好的方向也会有所帮助.
我可以检测到两条线的交点,但是如果我的线没有我的屏幕的长度,它会检测到它不应该在的点.
这是预览:
因此,它不应该检测到这个交叉点,因为水平线不是那么长.
码:
- (NSMutableArray *) intersectWithLines:(CGPoint)startPoint andEnd:(CGPoint)endPoint {
NSMutableArray *intersects = [[NSMutableArray alloc] init];
for(GameLine *line in [_lineBackground getLines]) {
double lineStartX = line.startPos.x;
double lineStartY = line.startPos.y;
double tempEndX = line.endPos.x;
double tempEndY = line.endPos.y;
double d = ((startPoint.x - endPoint.x)*(lineStartY - tempEndY)) - ((startPoint.y - endPoint.y) * (lineStartX - tempEndX));
if(d != 0) {
double sX = ((lineStartX - tempEndX) * (startPoint.x * endPoint.y - startPoint.y * endPoint.x) - (startPoint.x - endPoint.x) * (lineStartX * tempEndY …Run Code Online (Sandbox Code Playgroud) 我有两个QLists,我需要确定交叉点(在这个特定的情况下,两个QStringLists,但我会认为这将适用于每个容器,只要T实现operator==()).
确定列表之间交集的Qt方法是什么?
编辑:
订单和重复不是问题.我只是在寻找两个列表中存在的项目.
在3D空间中,我试图确定光线/线是否与正方形相交,如果是,则它与相交的正方形上的x和y位置相交.
我有两点代表的光线:
R1 = (Rx1, Ry1, Rz1) and
R2 = (Rx2, Ry2, Rz2)
Run Code Online (Sandbox Code Playgroud)
正方形由四个顶点表示:
S1 = (Sx1, Sy1, Sz1),
S2 = (Sx2, Sy2, Sz2),
S3 = (Sx3, Sy3, Sz3) and
S4 = (Sx4, Sy4, Sz4).
Run Code Online (Sandbox Code Playgroud)
我在网上找到了很多代数方程,但似乎没有一个完全符合这个问题.理想情况下,我想在Java代码中得到答案,但是我可以轻松转换为代码的等式也可以.
所有帮助将不胜感激.
我看到了WorldWind的Sphere -Line 交叉逻辑中看似矛盾的行为.我创建了一个Sphere和Line并且它们相交但是然后交集返回null(扫描代码用于注释://***这是它变得糟糕的地方).
public class WWTest extends ApplicationTemplate {
public static class VisualizationFrame extends ApplicationTemplate.AppFrame {
public VisualizationFrame() {
super(new Dimension(1200, 1024));
final Globe globe = getWwd().getModel().getGlobe();
//Create a sphere at 0,0 on the surface of the Earth wtih a 60 NMi radius
final Vec4 sphereCenter = globe.computePointFromLocation(LatLon.ZERO);
final Sphere sphere = new Sphere(sphereCenter, 111120);
// Draw the sphere
final RenderableLayer sphereLayer = new RenderableLayer();
sphereLayer.addRenderable(sphere);
final RenderableLayer pathLayer = new RenderableLayer();
// Create a line at 10k …Run Code Online (Sandbox Code Playgroud) 我有两组n个节点.现在我想将一组中的每个节点与另一组中的另一个节点连接起来.结果图应该没有交叉点.
我知道几种扫描线算法(Bentley-Ottmann-Algorithm来检查交叉点发生的位置,但除了蛮力方法之外,我找不到解决这些交叉点的算法.
一组中的每个节点可以连接到另一组中的任何其他节点.
任何解决这个问题的(一种有效的)算法的指针?无需实施.
编辑1:
以下是该问题的一种解决方案n=7:
黑点是一组节点,红点是一组.每个黑色节点必须连接到一个红色节点,以便连接它们的线不交叉.
EDIT2:
为了进一步说明:所有节点的位置都是固定的,结果图将有n个边.我也没有任何证据证明存在解决方案,但我无法创建一个没有解决方案的例子.我确信在那里有一个证据可以创建这样一个平面图.此外,只需要一种解决方案,而不是所有可能的解决方案.
algorithm intersection graph-theory line-segment planar-graph
intersection ×10
java ×2
python ×2
set ×2
2d ×1
3d ×1
algorithm ×1
arrays ×1
c ×1
c# ×1
c++ ×1
collections ×1
django ×1
ellipse ×1
generics ×1
geometry ×1
graph-theory ×1
iphone ×1
line ×1
line-segment ×1
linq ×1
many-to-many ×1
math ×1
objective-c ×1
performance ×1
planar-graph ×1
plane ×1
qlist ×1
qt ×1
qt4 ×1
shapes ×1
sorted ×1
worldwind ×1