From: Ethan A M. <me...@uw...> - 2020-06-23 21:44:12
|
On Tuesday, 23 June 2020 11:24:24 PDT Dima Kogan wrote: > I finished a patch just as you wrote this. The patch is attached. I > tried several operations, and it appears to do what I want, and not > break anything. The code has a lot of confusion about the meaning of > xlow/xhigh/ylow/yhigh in arguments to store2d_point() and again, in the > *cp structure this function fills. The previous code was passing the x,y > extents to store2d_point(), but if you do that, you run out of > arguments, and can't pass the y extents even if you wanted to. This > patch computes the extents inside store2d_point(), so there are > arguments left over. That won't work. The eventual extent of a cicle along the y axis will not be known until after the scaling on both x and y is complete. For an auto-scaled plot that will not be true until all the plot components, including functions, have been processed. There is not enough information yet at the time store2d_point() is called. "with circles" is not the only plot style for which autoscaling must be delayed till later. That is the reason for the extra routines box_range_fiddling() impulse_range_fiddling() histogram_range_fiddling() and so on. However for those plot styles the extra routine can be called following the individual plot component "with <whatever>". To handle circles you'd have to wait until _all_ plot components had contributed to the autoscaling. That could be done, but it would introduce a new stage of processing that has not been needed before this. And even so it would be imprecise, because if you must increase the y range to fit the circles that will itself increase the y-radius of the circles so you would need to iterate or estimate the asymptote. So not impossible, but more difficult than autoscaling other plot styles. Ethan |