如何检测D3地球仪上的线条交点?

时间:2015-10-27 01:06:04

标签: javascript d3.js svg

我一直在玩几个d3地球仪:

我把它们放在一起:

我的目标是展示this graph can be 3 colored

我遇到的问题是绘制线条的方法涉及使用" LineString"的正交投影。路径。在全球范围内,我在上面联系了,我的"伟大的圈子"以这种方式编码:

// poles
svg.append("path")
    .datum({type: "LineString", coordinates: [[0, -180], [0, -90], [0, 0], [0, 90], [0, 180]]})
    .attr("class", "equator")
    .attr("d", path);
// "vertical variants"
svg.append("path")
    .datum({type: "LineString", coordinates: [[40, -180], [40, -90], [40, 0], [40, 90], [40, 180]]})
    .attr("class", "equator")
    .attr("d", path);
svg.append("path")
    .datum({type: "LineString", coordinates: [[60, -180], [0, -80], [60, 0], [180, 80], [60, 180]]})
    .attr("class", "equator2")
    .attr("d", path);




// equator
svg.append("path")
    .datum({type: "LineString", coordinates: [[-180, 0], [-90, 0], [0, 0], [90, 0], [180, 0]]})
    .attr("class", "equator")
    .attr("d", path);
// "horizontal variants"
svg.append("path")
    .datum({type: "LineString", coordinates: [[-180, 40], [-90, 0], [0, -40], [90, 0], [180, 40]]})
    .attr("class", "equator3")
    .attr("d", path);

svg.append("path")
    .datum({type: "LineString", coordinates: [[-180, 20], [-90, 20], [0, -20], [90, -20], [180, 20]]})
    .attr("class", "equator")
    .attr("d", path);

svg.append("path")
    .datum({type: "Point", coordinates: [60, -30]})
    .attr("class", "point")
    .attr("d", path);

这里棘手的部分是理解坐标: [[-180, 40], [-90, 0], [0, -40], [90, 0], [180, 40]]

我知道我们基本上在谈论经度和纬度"在这里有这些坐标,我可以用这些来构建"大圆圈"包裹地球。

我遇到的问题是计算是否添加了这种坐标系的大圆相交。

例如,在above linked globe中,我在蓝线,绿线和蓝线的3个非常接近的交点附近放置了一个蓝点。我不知道如何计算这3个交点究竟在哪里。

有没有办法让d3检测到我的" LineString"的交叉点?路径?

我希望能够在这些交叉点上加点,并且还能跟踪哪些"大圆圈"参与交集...

另外,有人可以指点我从d3这里使用的投影坐标系计算这个吗?

0 个答案:

没有答案