Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!usc!apple!well!levine From: levine@well.sf.ca.us (Ron Levine) Newsgroups: comp.graphics Subject: Re: Practical Intro to PHIGS (new book) Summary: Not insufficient detail, just poor explanation . Message-ID: <24373@well.sf.ca.us> Date: 23 Apr 91 09:18:41 GMT References: <1991Apr19.175910.2922@Stardent.COM> Lines: 94 I am befuddled by Jan Hardenbergh's insistence on calling this book "great", even though he recognizes many of its shortcomings. I am also befuddled by his refusal to acknowledge many other of its flaws. >I stand by my characterization that this book is great. I've had >another few days to look at it, too. I do concur with Ron Levine in >that the does not go into lots of detail in many places. But it is a >339 page book - including lots of appendices and examples. I did not complain about lack of detail so much as the fact that the quality of explanation is frequently poor. Since Jan focusses on my complaint about the definition of "implicit regeneration", let us look at the complete paragraph. "Many applications build and modify models incrementally and iteratively. Not all workstations, however, have the ability to modify parts of a displayed picture _selectively_. On some workstations, such as a laser printer, the only way to bring the picture up to date is to redraw it completely. Redrawing the entire picture in this way is known as _implicit regeneration_. It is implicit because the redrawing is not explicitly requested by the application, which specifies only the incremental changes required to the picture. Implicit regenerations occur under the control of PHIGS." Now the first sentence creates the wrong impression, because, in fact ALL applications build and modify models incrementally, in the sense that they can call only one PHIGS function at a time. The question is whether the picture should be regenerated after each PHIGS function call which redefines the picture, or only after a batch of such calls. The second sentence overlooks the fact, that in general, NO workstations have the ability to modify parts of a displayed picture selectively, at least not correctly. On a CRT, you can delete a primitive by painting it out in the background color, but in general you will not produce a correct picture because you will damage whatever primitives lie under the deleted one. Thus, the "laser printer" in the third sentence is a confounding red herring. The main clause of this sentence is essentially true of ALL workstations. The key is understanding that "redraw completely" = "regenerate" = "traverse posted structures". It means traversing all the posted structures, respecting the relative priority of the root structures, the order of primitives within a structure, and whatever hidden line or hidden surface methods are in effect. That is the only way to get a guaranteed correct picture, no matter what the output device. Now we see that the fourth sentence, which purports to define "implicit regeneration", is meaningless because of the fuzziness of "in this way", which seems to have something to do with laser printers. The fifth sentence would be true if we had a valid definition of "implicit regeneration" in the fourth, but we don't. The last sentence is sort of true, but inadequate because here is where the important concept of deferral mode should be introduced. The last sentence should rather say something like: "Implicit regeneration is regeneration automatically instigated by PHIGS in response to any picture changing function call if the deferral mode is ASAP, or if the deferral mode is BNIG or BNIL and an input interaction is underway. If deferral mode is WAIT, then regeneration occurs only when the application explicity requests it by calling UPDATE WORKSTATION or REDRAW ALL STRUCTURES." Again, nowhere does the text mention the fact that on most workstations, most of the time, the only sensible deferral mode to use is WAIT. If you want approximately correct incremental drawing on a CRT, then you might also use modification mode UQUM (quick update methods), which might or might not be supported on your workstation type in the implementation you're using. It wouldn't make sense to use UQUM on a laser printer, but it wouldn't hurt either, provided that you remember to explicitly update the display at the end of the set of incremental changes. Now this is just one example. There are many other cases of poor explanation, or explanations that miss the essential point. I previously pointed out the lack of justification of the primitive aggregating feature of POLYLINE SET WITH DATA. The definition of "right-handed coordinate system" in Sec. 3.1 is just ludicrous and has no practical value. I concur with Jan that this is the best PHIGS book out, because it is the only one. As an introduction to pre-PHIGS PLUS PHIGS it is a lot better than some of the vendor documentation, but probably no better than some others. But anyone who buys it on the strength of the title's claim that it is a "practical introduction" to PHIGS PLUS is being duped. Ron