Correct, except it's d3.behavior.zoom that's caching the original
domain, rather than d3.scale.linear. The zoom behavior needs to know
what the original domain of the scale is, such that it can apply the
pan & zoom relative to the original domain.
The zoom behavior is still a work-in-progress, and if you have
suggestions on how the API could be designed to be more usable, I'm
all ears. :)
Mike
The transform methods on the zoom event are optional; you can always
modify the scale's domain yourself, using the event's scale and
translate attributes, rather than using the built-in methods which
cache the scale's domain. Then you have more control over the
behavior.
Mike