ANN: Displacement Scaling of graphic objects

Jim Hurley jhurley at infostations.com
Wed Mar 15 14:03:36 EST 2006


Scaling is a very common feature of all graphics applications, e.g. 
Illustrator and Freehand. But there is another type of scaling that 
is sometimes useful; for lack of a better expression I'll call it 
displacement scaling. (Thanks to a suggestion from Scott Rossi for 
bringing this up.)

As a simple example, consider a rectangle of width w and height h. If 
you magnify this in Illustrator or Freehand by an amount m, you get a 
rectangle with sides m*w and m*h. This  preserves the geometrical 
features of the rectangle. For example the tangent of the angle 
between the diagonal and the base is h/w in both rectangles.

But  suppose you wanted to make a frame by putting two rectangles 
together, one inside the other. You would want all the sides of the 
expanded rectangle to be at a uniform distance, say "d", from the 
original--as in a frame. This expanded rectangle does not preserve 
the geometry. The tangent of the diagonal angle becomes: 
(h+2d)/(w+2d), which is not the same as h/w. In fact, for large 
displacements, the rectangle becomes a square--the tangent approaches 
one. (Similarly, an expanded ellipse approaches a circle.)

The stack "ScaleMe" performs this displacement scaling on all 
polygons. (It also applies to any polygon with sufficient points that 
it approximates a curved figure, for example an ellipse.)

It presents some interesting problems, particularly when the graphic 
points are numerous and close together--as in an ellipse. In this 
case it is necessary to define the points of the graphic, not by Run 
Rev's graphic points (with just 3 significant figures) but with the 
full precision of Run Rev's decimal calculations. The calculated 
graphic points are stored in a custom property of the graphic. The 
points then are stored both as the customary 3 digit graphic points 
for purposes of display and as a decimal (8 displayed , 15 total?) 
digits for purposes of calculation.  (Scott: This eliminates all the 
problems we had with such figures.)

The stack shows how to create some dazzling graphic figures by 
repeatedly scaling a simple form and setting each displaced figure to 
a different color. It also touches on fractal graphics.

In the message box:

go url "http://home.infostations.net/jhurley/ScaleMe3.rev"



More information about the Use-livecode mailing list