Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!wuarchive!gem.mps.ohio-state.edu!uakari.primate.wisc.edu!xanth!lll-winken!ubvax!ardent!sim!sleat From: sleat@sim Newsgroups: comp.graphics Subject: Re: Cleaning up freehand drawings Summary: Don't think elastic band and weight is good Message-ID: <8543@ardent.UUCP> Date: 6 Oct 89 08:10:08 GMT References: <1580002@hp-ptp.HP.COM> <8387@ardent.UUCP> <694@hrc63.uucp> Sender: news@ardent.UUCP Reply-To: sleat@ez.ardent.com (Michael Sleator) Organization: Ardent Computer Corp., Sunnyvale, CA Lines: 52 In article <694@hrc63.uucp> paj@hrc63.uucp (Mr P Johnson "Baddow") writes: >How about this? > >Have the mouse cursor attached by a rubber band to a heavy cursor. The >heavy cursor draws the line and is dragged about by the mouse cursor. The >rubber band between them might be pure rubber or there might be damping in >the system. I have never seen a system like this, let alone used one, but >if I ever want to implement freehand drawing I will try it. It has the >advantage of being simple and intuitive (hence easy to get the hang of) >while providing exactly the sort of smoothing you want. Sharp corners can >be implemented by large mouse movements, straight or nearly straight lines >by giving a pull to start the weight and then following it with the mouse. The problem I see with this, if I correctly understand what you are saying, is that it introduces a time lag in the hand-eye feedback loop. Or to look at it another way, it splits the loop into two separate loops, which I'll call the primary and secondary loops -- the primary being feedback from the cursor or mouse pointer, and the secondary being feedback from the actual curve drawn. There is a time delay between the two, which I would expect to cause all of the usual problems of delayed feedback, such as overshoot. I think this would make the system slow and frustrating to use. What I had in mind was putting the filter directly in the primary feedback loop. This is a bit radical in the sense that it violates a dictum which I have generally held as true, namely that the primary hand-eye loop is sacrosanct and anything which mucks with it is evil. However, in thinking about it, I realize that the sins against which I rail are temporal ones. That is, things like failing to update the mouse pointer because the system is busy with paging activity are in fact evil because they introduce a time delay into the feedback loop (and a randomly varying time delay, at that). What I am proposing is purely a spatial filter. There is no delay introduced. The filter will introduce some spatial non-linearity in the mapping between the mouse position and the screen pointer, but this is precisely what the feedback loop continuously compensates for anyway. In fact, it might even be practical to leave the filter in the loop for normal point-and-click operations, depending on the how extreme the filter is. To get back to the drawing problem, this approach avoids the complication of multiple feedback loops. The drawing point is at the cursor, just as with a normal system, rather than once removed from it, as in the mass-and-spring model. Michael Sleator Ardent Computer 880 W. Maude Sunnyvale, CA 94086 408-732-0400 ...!{apple | decwrl | hplabs | ubvax | uunet}!ardent!sleat