这是相当概念性的,我希望有人可以提供帮助。我有一个脚本,当您在其中插入坐标(x,y,从 0 -> 800)时,它将返回 3 个单独范围内的预绘制坐标列表。
即:我输入200,200。我收到以下各项的列表:半径为 25、半径为 60、半径为 150 内的地块。
如果您对上下文感到好奇/请使用代码:
display(coords[n][1] + ", " + coords[n][2]);
if(n==0){
for(var i=0; i < data.length; i++) {
var xs = 0;
var xy = 0;
xs = xPlot - data[i][0];
ys = yPlot - data[i][1];
xs = xs * xs;
ys = ys * ys;
distance = Math.sqrt(xs + ys);
if (distance <= 25){
display2(data[i][0] + ", " + data[i][1] + " - " + alliance);
}
else if(distance <= 60){
display3(data[i][0] + ", " + data[i][1] + " - " + alliance);
}
else if(distance <= 150){
display4(data[i][0] + ", " + data[i][1] + " - " + alliance);
}
}
很容易。
现在,当我输入另一组坐标时,会创建另一个多维数组,我想检查两个(嗯,6 个)圆内的相交点。
我想过使用数组进行检查。如果输入了 2 个坐标,并且在两个内(绿色)圆内都找到了一个点,则 a = [g,g]。如果在一个内部找到一个点,但在另一个的中间(蓝色),设置 a = [g,b] 你明白了。红色是外圈。
当输入 3 个坐标时,事情变得更加棘手。假设一个点在两个内线和一个中线之内。那么 a = [g,g,b]。3 个列表的目的是将返回的值按从最佳到最差的组进行组织。因此,在具有 4 个输入的示例中,列表将按以下方式组织:
清单 1 / 清单 2 / 清单 3
gggg / gggb / bbbr
------- / ggbb / bbrr
------- / gbbb / brrr
------- / bbbb / rrrr
我将如何以可扩展的方式构建检查我的数组,所以如果我有 5 个输入,我就能够将我的结果放在适当的列中?
到目前为止,我已经开始这样做了:
else if(n>0){
for(var i=0; i < data.length; i++) {
for(var j=0; j < coords.length; j++) {
var xs = 0;
var ys = 0;
xs = coords[j][1] - data[i][0];
ys = coords[j][2] - data[i][1];
xs = xs * xs;
ys = ys * ys;
distance = Math.sqrt(xs + ys);
if (distance <= 25){
a[j] = [,[g]];
}
else if (distance <= 60){
a[j] = [,[b]];
}
else if (distance <= 150){
a[j] = [,[r]];
}
}
if($.inArray('g', a) && (!($.inArray('b', a)))){
display2(data[i][0] + ", " + data[i][1] + " - " + alliance);
}
如果 a 包含 g 但不包含 b,则最后一行会执行吗?(jquery)我在正确的轨道上吗?