[Oberon] Vinci environments and the current transformation matrix, CTM.

Easthope peasthope at cablelan.net
Wed Jan 24 23:33:41 MET 2007


I've been working on another Vinci drawing and thinking 
about a better way to handle dimensioning.

A general objective is to size the font and line widths 
independently of the drawing scale.  Why?  Well, suppose 
you make a drawing at a 1:1 scale for A4 paper.  Later 
you begin a new drawing at 1:100 scale for A4 paper.

The original drawing might serve as a template for the 
new drawing but the lettering in the dimensions and 
the line widths of the new drawing should not be 1/100 
the size of the lettering and line widths in the original.
In fact, lettering and lines widths on the new drawing 
are best about the same as on the original.

So how can this be achieved?  Would be convenient 
to define globally a graphics state or environment for 
font size and line width, which can be retained 
independent of changes incurred as the drawing is 
built.  After drawing a feature, one could temporarily 
drop into a "dimensioning mode", apply a dimension 
and then return to the "drawing mode".

To find a way to do this I reread Vinci.Text, The 
Graphical Description Language Vinci.  These questions 
-- What exactly is an environment?
-- Which of the statements invokes a new environment
  nested "within the current environment"?  (Quoting 
  the manual.)
-- What is a graphics state?
-- Is there always just one CTM which changes as 
  the environment changes or does each environment 
  have a CTM?
-- What is the structure of the CTM?  How is it applied 
  to a graphical vector?  Eg. 
  [[Sx 0 Tx] [0 Sy Ty]] . [Vx Vy 1]^T =? [SxVx+Tx  SyVy+Ty]^T
There are two motivations for mentioning these topics.
In the short term I can hope that someone else can shed 
some light.  In the long term my questions might motivate
better documentation in future work.

Apart from this I need to study the vast source code.

Regards,        ... Peter E.

Desktops.OpenDoc  http://carnot.pathology.ubc.ca/

More information about the Oberon mailing list