ColorSample(x, y) : if a == (0, 0.17) rel (x, y) , b == (0, 0.5) rel (x, y) , c == (0, 0.83) rel (x, y) , d == (0.33, 0) rel (x, y) , e == (0.33, 0.2) rel (x, y) , f == (0.33, 0.4) rel (x, y) , g == (0.33, 0.6) rel (x, y) , h == (0.33, 0.8) rel (x, y) , i == (0.33, 1.) rel (x, y) , j == (0.66, 0) rel (x, y) , k == (0.66, 0.2) rel (x, y) , l == (0.66, 0.4) rel (x, y) , m == (0.66, 0.6) rel (x, y) , n == (0.66, 0.8) rel (x, y) , o == (0.66, 1.) rel (x, y) , p == (1., 0) rel (x, y) , q == (1., 0.2) rel (x, y) , r == (1., 0.4) rel (x, y) , s == (1., 0.6) rel (x, y) , t == (1., 0.8) rel (x, y) , u == (1., 1.) rel (x, y) | T -> black paint c1(a) ; white paint c1(b) ; grey paint c1(c) ; red paint c1(d) ; blue paint c1(e) ; green paint c1(f) ; yellow paint c1(g) ; cyan paint c1(h) ; magenta paint c1(i) ; darkred paint c1(j) ; darkblue paint c1(k) ; darkgreen paint c1(l) ; darkyellow paint c1(m) ; darkcyan paint c1(n) ; darkmagenta paint c1(o) ; lightred paint c1(p) ; lightblue paint c1(q) ; lightgreen paint c1(r) ; lightyellow paint c1(s) ; lightcyan paint c1(t); lightmagenta paint c1(u) fi OrthoBasis(center, u, v) : if minuss == (- 1, 0) rel (center, v) , minusx == (- 1, 0) rel (center, u) , sx == (0, 0) rel (center) , ws == (0, 0) rel (center) , w == (0, - 1) rel (center, u) , vz == (0, 0) rel (center) , wz == (0, - 1) rel (center, u) , z == (0, - 1) rel (center, u) , uypr == (0, 0.5) rel (center) , ux == (0, 0) rel (u) , vs == (0, 0) rel (v) , x == (0, 0) rel (u) , s == (0, 0) rel (v) , uy == (0, 0) rel (center) , sy == (0, 0) rel (v) , y == (0, 0) rel (v) | (center, x) para (center, minusx) and (center, x) cong (center, minusx) and (center, ux) para (center, x) and hor (u, ux) and (center, sx) para (center, minusx) and hor (s, sx) and hor (y, center) and hor (uy, center) and (u, uy) para (x, center) and ver (center, uypr) and (center, uypr) cong (center, uy) and (uypr, sx) cong (center, y) and hor (sy, center) and (sy, s) para (x, center) and (center, s) para (center, minuss) and (center, s) cong (center, minuss) and (y, x) para (sy, ux) and (y, minusx) para (uy, sx) and (s, center) para (vs, center) and (s, center) para (center, ws) and (wz, w) para (center, minuss) and (center, minuss) para (v, vz) and (s, z) para (wz, vs) and (z, minuss) para (vz, ws) and (y, center) cong (z, center) and ver (center, z) and ver (vs, v) and ver (center, vz) and ver (center, wz) and ver (ws, w) -> Squaredot(x) ; Squaredot(z) ; Squaredot(y) ; Dots(u, ux) ; Dots(u, uy) ; Dots(sy, s) ; Dots(s, sx) ; Dots(v, vs) ; Dots(v, vz) ; Dots(wz, w) ; Dots(w, ws) ; Platch(v) ; Platch(w) ; Platch(u) ; draw (center, x) ; draw (center, z) ; draw (center, y) ; draw (center, u) ; draw (center, s) ; draw (center, v) ; draw (center, minuss) ; draw (center, minusx) ; draw (center, w) fi FalsePerspTest(c, u, v) : if r == (0, 1) rel (c, u) , minusr == (- 1, 0) rel (c, u) , q == (- 1, 0) rel (c) , p == (0, 1) rel (c) , ur == (0, 0.5) rel (c, u) , uq == (- 0.5, 0) rel (c) , m == (0, 1) rel (c, u) , minusm == (0, - 1) rel (c, u) , mq == (- 0.5, 0) rel (c) , mr == (- 0.5, 0) rel (c, u) , w == (0, 0) rel (c) , vm == (- 0.5, - 0.5) rel (c) , vp == (0, 0.5) rel (c) , wm == (0.5, 0.5) rel (c) , wp == (0.5, 0.5) rel (c) | ver (c, p) and hor (c, q) and (c, p) cong (c, q) and (c, r) para (c, minusr) and (c, r) cong (c, minusr) and hor (uq, c) and (ur, c) para (r, c) and hor (mq, c) and (mr, c) para (r, c) and (ur, u) para (c, q) and (uq, u) para (c, r) and (ur, mq) para (r, q) and (uq, mr) para (q, minusr) and (vm, c) para (m, c) and ver (vp, c) and ver (wp, c) and (m, c) para (wm, c) and (v, vp) para (m, c) and ver (v, vm) and ver (w, wm) and (w, wp) para (c, m) and (vm, vp) para (m, p) and (m, c) para (minusm, c) and (m, c) cong (minusm, c) and (wm, wp) para (p, minusm) -> Blah fi Blah(Args) : round ends stroke (v, v) ; print(" v", v, "TimesRoman", 10, 0) ; stroke (u, u) ; print(" u", u, "TimesRoman", 10, 0) ; stroke (w, w) ; print(" w", w, "TimesRoman", 10, 0) ; red paint stroke (p, p) ; print(" p", p, "TimesRoman", 10, 0) ; stroke (q, q) ; print(" q", q, "TimesRoman", 10, 0) ; stroke (r, r) ; print(" r", r, "TimesRoman", 10, 0) ; stroke (m, m) ; print(" m", m, "TimesRoman", 10, 0)