|
From: Alan G I. <ai...@am...> - 2003-10-21 07:54:03
|
On Mon, 20 Oct 2003 08:32:53 -0700 Ethan Merritt <merritt@u.washington.edu> wrote: > I thought some more about the issue of where an arrow should > terminate, and I have decided that I disagree with Alan's premise. > It is not correct that the tip of the arrowhead should terminate > immediately before the (x,y) coordinate it is drawn "to". > I can see two cases to be considered: > 1) The arrow exists for the purpose of indicating a certain (x,y) > point with great precision. In this case an arrow is entirely the > wrong visual aid. Instead one should place a dot, cross, or > circle on the point being indicated > 2) The arrow is pointing toward some feature of interest on the plot. > In this case it is proper for the arrow head to stop well before the > actual point being indicated, since it is best not to obscure the > immediate neighborhood of the point itself. > Arrows are not special. All line segments should have the same > properties, and all other line segments terminate precisely on > top of the (x,y) points they connect, where "on top of" means that > the finite thickness of the line causes it to extend beyond the > precise (x,y) coordinates in all directions. If I understand Ethan, he thinks arrows should be shortened even more than I do. But I still disagree. Basic user interface issue: set arrow from ptA to ptB will be expected to do precisely that: start at ptA and end at ptB. *If* this is the provided behavior, the user can always adjust these points appropriately to achieve the effects Ethan mentions in 2). Basic issue of cooperation: let the user apply arrows however they desire. Just make it easy to do so. (E.g., let the user decide if an arrow is an appropriate visual aid for his/her purpose.) Example: 'plot with vectors' will be badly screwed up if the vectors do not start and stop exactly where they should. Basic implementation issue: there should be no ambiguity about what "from" and "to" mean. Additionally, for filled arrows (and on capable terminals *all* heads can be drawn as filled) this keeps the drawing computations as simple a possible. (Related to this: an arrow without a head should start and stop and the same precise location as an arrow with a head!) Finally, on the interpretation of where an arrow goes, I am not proposing an idiosyncratic interpretation. To the contrary, I believe it is very standard. (Compare e.g. the LaTeX picture environment.) And contrary to Ethan's claim, I argue that this provide a good match for how lines are handled. Lines are generally expected *not* to project beyond the path endpoint. Using PostScript terminology, the natural presumption is a butt cap, and this is the natural default. Ethan seems to be suggesting that choosing a projecting square cap should be the default. I cannot recognize this as a standard practice. But after all is said and done, they key issue is: what will users expect, and what makes it easiest for them to achieve precisely what they desire in a predictable fashion? I was personally startled to find that arrows project past their assigned end point, so my view is obviously that this is unexpected and undesirable behavior. What is more, with this behavior it is essentially impossible for me to make an arrow terminate precisely where I wish it to. This too is very undesirable. Finally, with the new flexibility for arrowheads, the termination of the arrowhead will become even harder for a user to anticipate since it will change with the angle used for the arrowhead. If there were implementation issues that spoke against this, I would understand some hesitancy. But implementation is actually simplified for filled heads. (And *all* heads can be filled on capable terminals.) For nofilled heads it is basically a matter of computing the mitre to offset the head and the shaft length. Cheers, Alan Isaac |