-
Notifications
You must be signed in to change notification settings - Fork 0
/
LOGOLib.ps
100 lines (78 loc) · 2.08 KB
/
LOGOLib.ps
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
%!PS-Adobe-3.0
%
% LOGO library by Ruda Moura (Public Domain)
% July 3, 2018
%
% num inch num
% Convert from inches to points
/inch {72 mul} def
% num cm num
% Convert from cms to points
/cm {28.346456693 mul} def
% Maximum integer (2^32-1)
/maxint 16#7FFFFFFF def
% - urand real
% Return a uniform random number from [0, 1]
/urand {rand maxint div} def
% int random int
% Return a random integer from [0, num)
/random {rand exch mod} def
% - setrandomgraycolor -
% Select a random gray color to draw
/setrandomgraycolor {urand setgray} def
% - setrandomcolor -
% Select a random color to draw
/setrandomcolor {urand urand urand setrgbcolor} def
% - setrandomlinewidth -
% Select a random line width to draw
/setrandomlinewidth {urand setlinewidth} def
% - setrandomposition -
% Move "turtle" to a random position
/setrandomposition {9 inch random 11 inch random moveto} def
% x y setxy -
% Position "turtle" to x y
/setxy {moveto} bind def
% - home -
% Move "turtle" to the home position (the middle of the page)
/home {newpath 4 inch 5 inch moveto} bind def
% n forward -
% Move "turtle" forward by 'n' positions
/forward {
0 exch userdict (draw) get
{rlineto currentpoint stroke newpath moveto} {rmoveto} ifelse
} bind def
% n backward -
% Move "turtle" backward by 'n' positions
/backward {neg forward} bind def
% angle right -
% Rotate "turtle" to the right bindy 'angle' degrees
/right {neg rotate} bind def
% angle left -
% Rotate "turtle" to the left by 'angle' degrees
/left {rotate} bind def
% - penup -
% Set pen up
/penup {userdict (draw) false put} bind def
% - pendown -
% Set pen down
/pendown {userdict (draw) true put} bind def
% - showturle -
% Show "turtle"
/showturtle {userdict (turtle) true put} bind def
% - hideturtle -
% Hide "turtle"
/hideturtle {userdict (turtle) false put} bind def
% Abbreviations/aliases
/fd {forward} bind def
/bd {backward} bind def
/rt {right} bind def
/lt {left} bind def
/pu {penup} bind def
/pd {pendown} bind def
/st {showturtle} bind def
/ht {hideturtle} bind def
% Initialize
home
pendown
showturtle
% End of LOGO Library