LINQ到物具有非常有用的Union,Intersect和Except方法.可悲的是,有一个客户端我正在为它工作,他们正在强制要求.NET 2.0,所以LINQ不是一个选择.我查看了反映的代码,它根本没有反转.
是否有一个.NET 2.0库或易于实现的Union,Intersect和Except?
有谁知道是否可以将其从O(m*n)转为O(m + n)?
vector<int> theFirst;
vector<int> theSecond;
vector<int> theMatch;
theFirst.push_back( -2147483648 );
theFirst.push_back(2);
theFirst.push_back(44);
theFirst.push_back(1);
theFirst.push_back(22);
theFirst.push_back(1);
theSecond.push_back(1);
theSecond.push_back( -2147483648 );
theSecond.push_back(3);
theSecond.push_back(44);
theSecond.push_back(32);
theSecond.push_back(1);
for( int i = 0; i < theFirst.size(); i++ )
{
for( int x = 0; x < theSecond.size(); x++ )
{
if( theFirst[i] == theSecond[x] )
{
theMatch.push_back( theFirst[i] );
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个函数来处理布尔AND搜索中的多个查询.我有一个文档的词典,每个查询发生=query_dict
我想在query_dict.values()中的所有值的交集:
query_dict = {'foo': ['doc_one.txt', 'doc_two.txt', 'doc_three.txt'],
'bar': ['doc_one.txt', 'doc_two.txt'],
'foobar': ['doc_two.txt']}
intersect(query_dict)
>> doc_two.txt
Run Code Online (Sandbox Code Playgroud)
我一直在读关于交叉的但是我发现很难将它应用于字典.
谢谢你的帮助!
当我在OpenLayers和postgis数据库层中绘制多边形的交集时,似乎我得到的结果不正确.
交点在某些图层上正常工作.例如,如果我将一个三角形与一个表示裁剪字段的多边形相交,我会得到以下结果:

我的应用程序生成以产生上述结果的查询是:
SELECT ST_AsText(ST_Intersection(%(geometries_0)s::geometry, %(geometry)s::geometry))
Run Code Online (Sandbox Code Playgroud)
geometries_0我的三角形在哪里:
POLYGON((-104.84928345939991 40.518951354186285,-104.82319093011056 40.51953858115158,-104.83700967095314 40.50707521626648,-104.84928345939991 40.518951354186285))
Run Code Online (Sandbox Code Playgroud)
并且geometry是我的农田领域,众所周知的文字:
MULTIPOLYGON(((-104.841309611298 40.5075331998226,-104.84173356681 40.5069932245841,-104.842041204329 40.50640946683,-104.842224948796 40.5057962996657,-104.842280275816 40.5051688207073,-104.842205823049 40.5045424803865,-104.842003423773 40.5039327015263,-104.841678061729 40.5033544995574,-104.841237748411 40.502822112724,-104.840693325791 40.5023486513933,-104.840058199365 40.5019457751149,-104.839348008051 40.5016234053897,-104.838580239118 40.5013894812384,-104.837773797582 40.5012497635973,-104.836948540713 40.501207693373,-104.836124789073 40.5012643066572,-104.83532282616 40.5014182091969,-104.834562398965 40.5016656107496,-104.833862231727 40.5020004184754,-104.833239564888 40.5024143870601,-104.832709730574 40.5028973218633,-104.83228577506 40.5034373300773,-104.831978137541 40.5040211136997,-104.831794393074 40.5046342970926,-104.831739066055 40.5052617810515,-104.831813518821 40.5058881146554,-104.832015918097 40.5064978757385,-104.832341280141 40.5070760506105,-104.83278159346 40.5076084036796,-104.833326016079 40.5080818278834,-104.833961142505 40.5084846673069,-104.834671333819 40.5088070040565,-104.835439102753 40.5090409023397,-104.836245544289 40.5091806037522,-104.837070801158 40.5092226689759,-104.837894552799 40.5091660624086,-104.83869651571 40.509012177646,-104.839456942906 40.5087648031902,-104.840157110143 40.5084300292289,-104.840779776982 40.5080160977709,-104.841309611298 40.5075331998226)))
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用不同的图层("土壤")执行相同的查询,我会得到一个空结果:

查询是一样的:
SELECT ST_AsText(ST_Intersection(%(geometries_0)s::geometry, %(geometry)s::geometry))
Run Code Online (Sandbox Code Playgroud)
具有geometries_0应重叠的多边形:
POLYGON((-104.84627938530097 40.54511058649626,-104.83460641167578 40.545175808723876,-104.84070039055733 40.537283458057615,-104.84627938530097 40.54511058649626))
Run Code Online (Sandbox Code Playgroud)
和一个geometry表示土壤的图层,类似于上述查询中的裁剪字段:
MULTIPOLYGON(((-104.939716 40.258166,-104.939775 40.258174,-104.939963 40.258159,-104.940159 40.258065,-104.940039 40.257671,-104.939917 …Run Code Online (Sandbox Code Playgroud) 我有一个threejs场景,对象的交叉检查.我将每个场景对象添加到数组中,然后由raycaster检查.
var intersects = raycaster.intersectObjects( scene.children );
Run Code Online (Sandbox Code Playgroud)
然后,我检查对象的颜色,并在与鼠标指针接触时更改它.
INTERSECTED.material.emissive.setHex( 0xff0000 );
Run Code Online (Sandbox Code Playgroud)
如果我向场景添加一个辅助对象,比如CameraHelper或GridHelper,我会得到常量错误,因为.getHex .setHex辅助对象是不可能的.
是否可以从此检查中排除辅助对象,我该怎么做?
它必须是scene.children- scene.helpers,但我无法想出办法.谢谢您的帮助.
我有两个函数:一个用于行(y),另一个用于曲线(hnc).我想确定两个函数相交的一个x值
sigma = 0.075
mu = 0
r=0.226
theta=0.908
H=0.16
hnc <- function(x) (1/(sigma*sqrt(2*pi)))*(exp(-(x^2)/(2*(sigma^2))))
y <- function(x) 2*pi*x+(pi*r^2/((360/theta)/H))
curve(hnc,0,r,n=100,col="blue")
plot(y,0,r,add=T,col="red")
Run Code Online (Sandbox Code Playgroud)
我尝试过使用nleqslv软件包,但是这会产生两个不同意的x值(也许是因为我使用的不正确)
int <- function(x){
z <- numeric(2)
z[1] <- (1/(sigma*sqrt(2*pi)))*(exp(-(x[1]^2)/(2*(sigma^2))))
z[2] <- 2*pi*x[2]+(pi*r^2/((360/theta)/H))
z}
nleqslv(c(0.14,0.14),int,method="Broyden")
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激!
谢谢,埃里克
间隔由它们的边界给出为数组[a,b]和[x,y].我想计算它们之间的交叉长度.根据这个页面:http://world.std.com/~swmcd/steven/tech/interval.html
我可以告诉它是0如果
(not (a < y && x < b))
Run Code Online (Sandbox Code Playgroud)
成立.
例如,间隔[1.2,4.3]和[2.1,5.5]交叉点长度为4.3-2.1 = 2.2
我有2个数组让我们说:
A = [1,2,3,4,5] and B = [1,2,3,6,7]
Run Code Online (Sandbox Code Playgroud)
我想执行以下'设置计算':
C = (A ? B)
D = A - (A ? B)
E = B - (A ? B)
Run Code Online (Sandbox Code Playgroud)
实质上:
C = [1,2,3]
D = [4,5]
E = [6,7]
Run Code Online (Sandbox Code Playgroud)
有没有一种聪明的方法来做到这一点,或者我将不得不用循环和ifs交叉检查每个数组成员?我不能使用外部库(如math.js或w/e).
提前致谢.
我试图找到两个范围(int值)和(如果存在)之间的交集返回一个包含交集的开始和结束的数组
例
range 1 : 2,5
range 2 : 4,7
result : 4,5
Run Code Online (Sandbox Code Playgroud)
我发现了几个关于数组之间交叉的其他主题,但没有人帮助我找到确切的交集(我刚刚发现了一个有用的函数,如果交集存在但是没有告诉交叉点是什么,则返回'true')
我在alghoritms非常糟糕,所以我发现了一些问题,我真的很感激一个提示
谢谢
我有这门课
public class FlightSegment{
public string ClassName { get;set;}
}
Run Code Online (Sandbox Code Playgroud)
而且我希望FlightSegments与众不同ClassName
void Main()
{
var list1 = new List<FlightSegment>() {
new FlightSegment{ ClassName = "A"},
new FlightSegment { ClassName = "B"}
};
var list2 = new List<FlightSegment>() {
new FlightSegment{ ClassName = "B"},
new FlightSegment { ClassName = "C"}
};
var listOfLists = new List<List<FlightSegment>>() { list1, list2 };
var intersection = listOfLists.Aggregate((previousList, nextList) => previousList.Intersect(nextList).ToList());
Console.WriteLine(intersection); //Gives me empty result
}
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
var intersection = listOfLists.Aggregate((previousList, …Run Code Online (Sandbox Code Playgroud) intersection ×10
arrays ×2
javascript ×2
union ×2
.net ×1
.net-2.0 ×1
aggregate ×1
algorithm ×1
c# ×1
c++ ×1
dictionary ×1
hashtable ×1
helper ×1
intervals ×1
linq ×1
math ×1
postgis ×1
postgresql ×1
python ×1
r ×1
raycasting ×1
ruby ×1
scene ×1
set-theory ×1
stl ×1
three.js ×1