我一直在玩几个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这里使用的投影坐标系计算这个吗?