[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]

*To*: <mark>, <xtech>*Subject*: intersection of enclosures*From*: Eric Dean Tribble <tribble>*Date*: Mon, 16 Oct 89 19:29:41 PDT

A few weeks ago Mark'M and I discussed the definition of intersection for enclosures. I came up with a semantics based on discovering what's shared between the two enclosure: define an enclosure as a Dsp and a region in the coordinate system defined by the Dsp. The intersection of two enclosures A and B is the Dsp shared by DspA and DspB and the region which is the intersection of the transformation of the two original regions into the newly defined coordinate space (by the shared Dsp). There is a definition below. Warning: the untransform operations might have to be transform operations, I don't want to figure out now. Enclosure * intersect(Enclosure * enclA, Enclosure * enclB) { PartiallyOrdered * dspC; dspC = enclA ->dsp() ->sharedWith(enclB ->dsp()); return Enclosure(dspC, intersect(regionA ->unTransform(enclA ->dsp() ->minus(dspC)), regionB ->unTransform(enclB ->dsp() ->minus(dspC)))); } Since my original idea for enclosures came from the Medium (now Warp) manipulation stuff I did for Viewers, it finally struck me that I already had a definition of intersect that is fairly clean and is quite a bit more useful. Enclosure * intersect(Enclosure * enclA, Enclosure * enclB) { return Enclosure(enclA ->dsp(), intersect(regionA, regionB ->unTransform(enclB ->dsp() ->minus(enclA ->dsp())))); } The intersection of two enclosures in the intersection of region A and the projection of region B into the coordinate system of enclosure A, all set in the coordinate system of enclosure A. Notice that this makes intersection non-commutative, but only in the coordinate system of the result. The actual region cooresponding to the enclosure (transform the enclosure's region by its dsp) is identical in either case. The new definition of intersect allows me to apply operations to an enclosure that always produce results in the same coordinate system. I think unionWith() should have the same property (commutative only wrt the enclosures defined region). dean

**Follow-Ups**:**intersection of enclosures***From:*Mark S . Miller

- Prev by Date:
**Link Behavior Questions** - Next by Date:
**Link Behavior Questions** - Previous by thread:
**Link Behavior Questions** - Next by thread:
**intersection of enclosures** - Index(es):