The problem here is that d3.geo.projection assumes all inputs are in
spherical coordinates (degrees), and by default it adaptively resamples
line segments depending on their curvature when projected.
As well as resampling, other API methods for d3.geo.projection assume
spherical coordinates, e.g. projection.rotate rotates the input
coordinates about three axes, and of course projection.clipAngle clips
input features if they cross the antimeridian (or a small circle).
If you want to use d3.geo.path to draw pre-projected features, you can
do this using path.projection(null). This specifies an identity
projection with no resampling. (Note that passing a function to
path.projection(…) will automatically resample, so the assumption there
is still spherical coordinates.)
It's also possible to turn off resampling using projection.precision(0),
but spherical coordinates are still assumed, so you may still end up
running into difficulties due to clipping.
Depending on what you're trying to do, you might prefer to project your
data into spherical coordinates to take advantage of clipping and
resampling. Otherwise, if you just want to render paths with
pre-projected data, you can use path.projection(null).