QuarterEllipse(a, b, c)
: if k == (1., 0.552) rel (a, b, c)
, f == (0.552, 1.) rel (a, b, c)
| T
-> stroke (c, f, k, b) fi
Ellipse(a, b, c)
: if e == (0., 1.) rel (a, b, c)
, d == (0., - 1.) rel (a, b, c)
, c == (- 1., - 0.) rel (a, b, c)
| T
-> QuarterEllipse(a, b, e)
; QuarterEllipse(a, e, c)
; QuarterEllipse(a, c, d)
; QuarterEllipse(a, d, b) fi
FillQuarterEllipse(a, b, c)
: if k == (1., 0.552) rel (a, b, c)
, f == (0.552, 1.) rel (a, b, c)
| T
-> fill (c, f, k, b), (b, a), (a, c) fi
FillEllipse(a, b, c)
: if d == (- 1, 0) rel (a, b, c)
, e == (0, - 1) rel (a, b, c)
| T
-> FillQuarterEllipse(a, b, c)
; FillQuarterEllipse(a, c, d)
; FillQuarterEllipse(a, d, e)
; FillQuarterEllipse(a, e, b) fi
FillLune(a, b1, b2, c)
: if k1 == (1., 0.552) rel (a, b1, c)
, f1 == (0.552, 1.) rel (a, b1, c)
, k2 == (1., 0.552) rel (a, b2, c)
, f2 == (0.552, 1.) rel (a, b2, c)
| T
-> fill (c, f1, k1, b1), (b1, b2), (b2, k2, f2, c) fi
QuarterCircle(a, b)
: if c == (0, 1) rel (a, b) | T
-> QuarterEllipse(a, b, c) fi
Circle(a, b)
: if c == (0, 1) rel (a, b) | T -> Ellipse(a, b, c) fi
FlexFoot(heel, toe, plant, hip, away)
: if insole == (- 0.15, 0.5) rel (heel, away, toe)
, outsole == (0.15, 0.5) rel (heel, away, toe)
, thick == (0.15, 0) rel (heel, toe)
| T
-> if arch == (0., 0.1) rel (plant, toe, hip)
| (arch, plant) para (heel, hip)
and (arch, plant) cong (heel, thick)
-> black paint
if foo == (0, 0) rel (arch) | T
-> QuarterEllipse(plant, outsole, toe)
; QuarterEllipse(plant, outsole, heel)
; QuarterEllipse(plant, arch, toe)
; QuarterEllipse(plant, arch, heel)
; FillLune(plant, insole, outsole, toe)
; FillLune(plant, insole, outsole, heel)
; FillLune(plant, insole, arch, toe)
; FillLune(plant, insole, arch, heel)
; QuarterEllipse(plant, insole, toe)
; QuarterEllipse(plant, insole, heel) fi fi fi
FlexLeg(hip, heel, toe, away)
: if knee == (0.5, 0.25) rel (heel, hip, toe)
, plant == (0, 0.5) rel (heel, away, toe)
, f1 == (1.04, 0.1) rel (heel, hip, toe)
, f2 == (0.86, 0.36) rel (heel, hip, toe)
, f3 == (0.59, 0.44) rel (heel, hip, toe)
, f4 == (0.22, 0.43) rel (heel, hip, toe)
, b1 == (1., - 0.1) rel (heel, hip, toe)
, b2 == (0.78, 0.23) rel (heel, hip, toe)
, b3 == (0.4, 0.28) rel (heel, hip, toe)
| T
-> if arch == (0.5, 0.1) rel (heel, toe, hip)
, thick == (0.15, 0) rel (heel, toe)
| (arch, plant) para (heel, hip)
and (arch, plant) cong (heel, thick)
-> FlexFoot(heel, toe, plant, hip, away)
; black paint
stroke (f1, f2, f3, f4)
; stroke (b1, b2, b3, heel)
; fill (f1, f2, f3, f4)
, (f4, heel)
, (heel, b3, b2, b1)
, (b1, f1) fi fi
FlexThing
(center
, rightEar
, nose
, tip
, rightHeel
, rightToe
, leftHeel
, leftToe
, look)
: if leftHip
== (- 0.7, - 0.7) rel (center, tip, rightEar)
, rightHip == (- 0.7, 0.7) rel (center, tip, rightEar)
, leftRef == (1, 1) rel (center, leftHeel, rightEar)
, rightRef == (1, 1) rel (center, rightHeel, rightEar)
| T
-> yellow paint
FlexLeg(rightHip, rightHeel, rightToe, rightRef)
; FlexBody(center, nose, rightEar, tip, look)
; FlexLeg(leftHip, leftHeel, leftToe, leftRef) fi
FlexBody(center, nose, ear, tip, look)
: if nx == (0, 0) rel (nose)
, ex == (0, 0) rel (ear)
, tx == (0, 0) rel (tip)
, exr == (0, 0) rel (ear)
, txr == (0, 0) rel (tip)
, enx == (0, 0) rel (nose)
, border == (0.7, 0.7) rel (center, nose, ear)
| ver (nose, nx)
and hor (nx, center)
and ver (ear, ex)
and hor (ex, center)
and ver (tip, tx)
and hor (tx, center)
and ver (exr, center)
and (ex, center) cong (exr, center)
and ver (txr, center)
and (tx, center) cong (txr, center)
and hor (enx, center)
and (enx, center) cong (nx, exr)
and (border, center) para (nose, center)
and (border, center) cong (enx, txr)
-> Head(center, border, nose, ear, tip, look) fi
QuarterBody(a, b)
: if k == (1., 0.552) rel (a, b)
, f == (0.552, 1.) rel (a, b)
, c == (0., 1.) rel (a, b)
| T
-> stroke4(c, f, k, b)
; fill (a, c), (c, f, k, b), (b, a) fi
Eye(m, a, h, p)
: if b == (1.55, 0) rel (m, a)
, c == (1, 1) rel (m, a, h)
, pa == (1, 1) rel (m, a, p)
, pb == (1.2, 1) rel (m, a, p)
, pc == (1, 0.6) rel (m, a, h)
| (pa, pc) para (a, c) and (pa, pb) para (a, b)
-> cyan paint
FillEllipse(a, b, c)
; black paint
FillEllipse(pa, pb, pc); Ellipse(a, b, c) fi
Eyes(m, r, h, p)
: if l == (- 1, 0) rel (m, r, h) | T
-> Eye(m, r, h, p); Eye(m, l, h, p) fi
Head(center, border, nose, ear, tip, look)
: if e == (0., 1.) rel (center, border)
, d == (0., - 1.) rel (center, border)
, c == (- 1., - 0.) rel (center, border)
, mideye == (0.916, 0.4) rel (center, nose, tip)
, topeye == (0.835, 0.55) rel (center, nose, tip)
| T
-> QuarterBody(center, e)
; QuarterBody(center, c)
; QuarterBody(center, d)
; QuarterBody(center, border)
; if eye == (1, 0.15) rel (center, mideye, ear) | T
-> if pupil == (1, 0.01) rel (center, eye, look) | T
-> Eyes(mideye, eye, topeye, pupil) fi fi
; Smile(center, nose, ear, tip, border) fi
Smile(a, nose, ear, tip, b)
: if nn == (1, - 0.2) rel (center, nose, tip)
, endsm == (- 0.916, 0.4) rel (center, ear, nose)
| T
-> if begsm == (0, 0) rel (nose)
| (begsm, center) para (nn, center)
and (begsm, center) cong (border, center)
-> if pp == (0, 1) rel (center, begsm)
, eder == (0.5, 1) rel (center, begsm, endsm)
| T
-> if bder == (1, 1) rel (center, begsm)
| (center, ear) cong (begsm, bder)
and (center, pp) para (begsm, bder)
-> black paint
round ends
stroke (begsm, bder, endsm, endsm)
; Curl(eder, endsm) fi fi fi fi
Curl(a, b)
: if f == (0.95, - 0.1) rel (a, b)
, e == (1., - 0.05) rel (a, b)
, d == (1., 0.05) rel (a, b)
, c == (0.95, 0.1) rel (a, b)
| T
-> black paint stroke (c, d, e, f) fi
Test(center, border, nose, ear, tip, look)
: yellow paint Head(center, border, nose, ear, tip, look)
stroke4(a, b, c, d): black paint stroke (a, b, c, d)