[Oberon] Vinci environments and the current transformation matrix,
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
-- 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.
More information about the Oberon