Copyright (C) 1994, Digital Equipment Corp.
by Stephen Harrison and Steve Glassman
MODULE; IMPORT R2Path, Math, R2; PROCEDURE ShapeUtils RegularPolygon (sides: CARDINAL := 3; radius := 1.0): R2Path.T = VAR path := NEW(R2Path.T); BEGIN path.init(); FOR i := 1 TO sides DO WITH theta = 2.0 * Math.Pi * FLOAT(i) / FLOAT(sides), x = radius * FLOAT(Math.cos(FLOAT(theta, LONGREAL))), y = radius * FLOAT(Math.sin(FLOAT(theta, LONGREAL))), p = R2.T{x, y} DO IF i = 1 THEN path.moveTo(p); ELSE path.lineTo(p); END; END; END; path.close(); RETURN path; END RegularPolygon; BEGIN END ShapeUtils.