OK, so I was able to at least simulate the images hiding around the back of the globe, by calculating the great circle distance between the projection center and the point in question. If the distance was greater than π/2, the point would be beyond the horizon:
.attr("opacity", function(d) {
var geoangle = d3.geo.distance(
d.geometry.coordinates,
[
-projection.rotate()[0],
projection.rotate()[1]
]);
if (geoangle > 1.57079632679490)
{
return "0";
} else {
return "1.0";
}
})
I'm sure I can get a bit fancier by fading them out as they approach the edge, disabling clicks, etc. but now I can move on...