[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [cgmo-webcgm] ISSUE: In what components is 'transform' defined?
A few thoughts after reading the transforms/segments thread... At 09:33 AM 1/18/2008 -0800, Galt, Stuart A wrote: >[...] >I think that the math behind the two approaches is identical and the >differences are in how interfaces are defined. SVG defines a 3x3 matrix >with the >bottom row hard coded to 0,0,1. Correct, they (SVG and CGM) are mathematically equivalent, but parameterized differently. And the conceptual model is described differently, although leading to the same mathematics. Correct me if I'm wrong, but SVG actually parameterizes 'transform' in SVG content with six numbers a,b,c,d,e,f. The *effect* of transform is described in terms of homogenous coordinates (x,y,w) that enables all transforms, including translation, to be conceptually expressed as affine transformations and implemented with simple 3x3 matrix arithmetic. The same is true of CGM, which parameterizes transform as a 2x2 matrix (4 numbers) plus a 2x1 (the other two numbers) in CGM content. The effect can and should be conceptually described using homogenous coordinates and 3x3 matrices. >[...snip...] >Style property or APS attribute: >In my mind a style property is one that has an equivalent graphic >primitive while the APS attributes in general do not have an equivalent >graphic primitive. The way I think of it... A Style Property is a thingy for "transient changes to presentation style of graphical objects." They are creatures of the DOM and XCF only. Whereas most of them have some associated similar graphical attribute in the metafile, it is not universal. Intensity and raster intensity are Style Properties that are unique to DOM and XCF. So it is perfectly fine (IMO) to have 'transform' as a Style Property that can be applied via DOM or XCF to a metafile, without 'transform' also being defined as part of metafile content. OTOH, if 'transform' appears in the metafile itself, then it is not a Style Property. Style Properties do not occur in the metafile. It would be an ApsAttr or something else. ApsAttrs *always* are defined as part of the metafile content. See 3.2.2 in WebCGM. They are also accessible through DOM. So ... back to our use cases. If we want 'transform' only to appear in DOM and XCF, for the use case of transient transformation of the geometry just during the duration of the user's viewer session (e.g., step animation), then Style Properties suffice. If this is the case, we should stay far away from segments -- IMO they are irrelevant overhead for this use case. And such a design (segment-dependent)would preclude applying the transformations of a 2.1 DOM implementation to 1.0 and 2.0 metafiles, as has been discussed. But if we want to support use cases that dictate that 'transform' should be carried within the metafile, then... it will have to be instanciated as either an ApsAttr, or we might pick up CGM segments and segment transform. Such use cases might include: 1.) ability within the metafile itself to copy a single reference instance of an object to multiple viewable instances, in different places and sizes (like COPY SEGMENT); 2.) or include in the metafile multiple instances of the canonical definition of an object, each with its own transform to make it appear in different places and sizes ('transform' ApsAttr). 3.) Or being able to record in the CGM the state of a graphical editing session wherein the object tree has been saved with transforms attached to the nodes, as opposed to saving the tree post-transform-application to get a transform-less object tree. I don't know if these use cases are important enough to impose on the vendors to implement segments. They certainly stray from our center-line use cases, which are things like step animation. (Note that Segments were in ATA long ago, were also in the NIST test suite IIRC, and some vendors did implement them then. But not all vendors, I would suspect.) -Lofton. p.s Aside: Note that APS are supposed to be application-oriented and entirely non-graphical in effect, according to CGM:1999. I.e., a viewer that doesn't understand WebCGM is supposed to get the same static graphical picture if it ignores APS. So a 'transform' ApsAttr violates that design intent. But we already crossed that line long ago with other things like the 'visibility' ApsAttr.
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]