我正在尝试将 WebGL 地球与 d3.geo.satellite 投影相结合。
我已经设法将 2 个投影相互叠加并同步旋转,但我无法同步缩放。当我同步它们以匹配大小时,WebGL 投影会变形,但 d3.geo.satellite 保持不变。我尝试了不同的projection.scale、projection.distance组合,但没有取得多大成功。
这是 JS fiddle(加载资源需要一些时间)。您可以拖动它来旋转(效果很好)。但是如果你放大(使用鼠标滚轮)你可以看到问题。
https://jsfiddle.net/nxtwrld/7x7dLj4n/2/
重要的代码在脚本的底部——缩放函数。
function scale(){
var scale = d3.event.scale;
var ratio = scale/scale0;
// scale projection
projection.scale(scale);
// scale Three.js earth
earth.scale.x = earth.scale.y = earth.scale.z = ratio;
}