diff --git a/cards-faces.asy b/cards-faces.asy new file mode 100644 index 0000000..590e807 --- /dev/null +++ b/cards-faces.asy @@ -0,0 +1,29 @@ +import "scaling.asy" as scale; +import "faces/count_of_cards.asy" as coc; + +typedef void drawfunc(picture, pen); + +void noop(picture p, pen fg) {} + +drawfunc[] cards_faces = { + null, + + null, null, null, null, null, null, + + noop, + noop, + noop, + count_of_cards, +}; + +transform[] cards_face_placements = { + identity, + + identity, identity, identity, identity, identity, identity, + + identity, + identity, + identity, + shift((98.9844 + 112.953)/2 - width/2, (226.41 + 245.965)/2 - height/2)*scale((112.953-98.9844)/width), +}; + diff --git a/cards.asy b/cards.asy index ab9ffa1..4fc09d5 100644 --- a/cards.asy +++ b/cards.asy @@ -3,6 +3,7 @@ import "suits.asy" as suits; import "numerals.asy" as numerals_paths; import "nobles.asy" as nobles; import "faces.asy" as general_faces; +import "cards-faces.asy" as cards_faces; real corner_radius = width/12; @@ -62,17 +63,9 @@ path[] recursive_card(int value, int suit, int depth=4, bool outermost=true) { suit_icon = icons[suit]; } path[] indicator = shift(indicator_pos)*scale(indicator_scale_factor)*suit_icon; - path[] numeral; - path[] face; - if (value == NOBLE) { - numeral = noble_letters[suit]; - face = noble_faces[suit]; - } else { - numeral = numerals[value]; - face = faces[value]; - } + path[] numeral = numerals[value]; numeral = shift(numeral_pos)*scale(numeral_scale_factor)*numeral; - result = result^^face^^indicator^^(rotate(180)*indicator)^^numeral^^(rotate(180)*numeral); + result = result^^indicator^^(rotate(180)*indicator)^^numeral^^(rotate(180)*numeral); real current_scale_factor = scale_factor; if (value == 1) { @@ -83,3 +76,40 @@ path[] recursive_card(int value, int suit, int depth=4, bool outermost=true) { } return result; } + +picture recursive_face_card(int value, int suit, int depth=4, bool invertcolor=false) { + pen fg; + if (invertcolor) { + fg = white+evenodd; + } else { + fg = suit_colors[suit]+evenodd; + } + + picture p = new picture; + picture suit_icon = new picture; + if (suit == CARDS) { + if (depth == 0) { + return p; + } + fill(p, cards_face_placements[value]*card, fg); + picture subcard = recursive_face_card(value, suit, depth-1, !invertcolor); + add(p, cards_face_placements[value]*subcard); + cards_faces[value](p, fg); + + suit_icon = new picture; + fill(suit_icon, card, fg); + add(suit_icon, subcard); + } else { + add(p, faces[suit][value]); + fill(suit_icon, icons[suit], fg); + } + + picture indicator = shift(indicator_pos)*scale(indicator_scale_factor)*suit_icon; + path[] numeral = numerals[value]; + numeral = shift(numeral_pos)*scale(numeral_scale_factor)*numeral; + fill(p, numeral^^(rotate(180)*numeral), fg); + add(p, indicator); + add(p, rotate(180)*indicator); + + return p; +} diff --git a/count-of-cards.svg b/count-of-cards.svg index d9d9f5d..5c07aed 100644 --- a/count-of-cards.svg +++ b/count-of-cards.svg @@ -20,6 +20,12 @@ style="vector-effect:non-scaling-stroke;fill:#000000;fill-opacity:1;stroke:#1afe1f;stroke-width:3.92408;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline" d="m 92.034398,194.12018 0.237572,-34.06492 c 0,0 0.89305,-8.30803 4.028441,-10.16838 1.990415,-1.181 5.006709,-0.49472 6.891139,0.84894 3.56215,2.53994 5.76236,11.79226 5.76236,11.79226 l 0.0599,32.33194 38.33248,0.71802 0.3206,-108.336588 -83.971443,-0.334841 3.232653,106.867379 z" id="path1490" + sodipodi:nodetypes="ccaaccccccc" /> + sodipodi:nodetypes="sccsas" /> diff --git a/deck.asy b/deck.asy index 97ef413..b717ed3 100644 --- a/deck.asy +++ b/deck.asy @@ -8,14 +8,14 @@ for (int suit = 0; suit <= 5; ++suit) { currentpicture = new picture; filldraw(card, white, black); - if (suit == CARDS && value == 1) { + if (value == 1) { // due to exponential growth, with the larger suit icon on the 1 // card, the endpoint of the recursion is a *lot* more visible fill(recursive_card(value, suit, 6)); - } else if (suit == CARDS && value > 6) { + } else if (value > 6) { // conversely, face cards don't need as much recursion depth // because the only icons present are significantly smaller - fill(recursive_card(value, suit, 3)); + add(recursive_face_card(value, suit, 3)); } else { fill(recursive_card(value, suit)); } diff --git a/faces.asy b/faces.asy index 2e7c139..48ecc22 100644 --- a/faces.asy +++ b/faces.asy @@ -1,7 +1,55 @@ -path faces[][] = { - {}, // 0 - {}, {}, {}, {}, {}, {}, // 1-6 - {}, // traveler - {}, // knight - {}, // wizard -}; +import "suits.asy" as suits; +import "faces/prince_of_wheels.asy" as prince_of_wheels; + +picture[][] faces = { {}, {}, {}, {}, {}, {} }; + +for (int suit = 0; suit < 6; ++suit) { + for (int value = 0; value <= 6; ++value) { + faces[suit].push(new picture); + } +} + +// traveler +faces[BREAD].push(new picture); +// knight +faces[BREAD].push(new picture); +// wizard +faces[BREAD].push(new picture); +// noble +faces[BREAD].push(new picture); + +// traveler +faces[BLADES].push(new picture); +// knight +faces[BLADES].push(new picture); +// wizard +faces[BLADES].push(new picture); +// noble +faces[BLADES].push(new picture); + +// traveler +faces[WHEELS].push(new picture); +// knight +faces[WHEELS].push(new picture); +// wizard +faces[WHEELS].push(new picture); +// noble +faces[WHEELS].push(prince_of_wheels); + +// traveler +faces[CHAIRS].push(new picture); +// knight +faces[CHAIRS].push(new picture); +// wizard +faces[CHAIRS].push(new picture); +// noble +faces[CHAIRS].push(new picture); + +// traveler +faces[PUPPETS].push(new picture); +// knight +faces[PUPPETS].push(new picture); +// wizard +faces[PUPPETS].push(new picture); +// noble +faces[PUPPETS].push(new picture); diff --git a/faces/count_of_cards.asy b/faces/count_of_cards.asy new file mode 100644 index 0000000..08c9c68 --- /dev/null +++ b/faces/count_of_cards.asy @@ -0,0 +1,217 @@ +import "scaling.asy" as scaling; + +void count_of_cards(picture p, pen fg) { + void pclip(guide pth) { + clip(p, shift(-width/2,-height/2)*pth); + } + + void pfill(guide pth) { + fill(p, shift(-width/2,-height/2)*pth, fg); + } + + void pfill(path pth[]) { + fill(p, shift(-width/2,-height/2)*pth, fg); + } + + // finger clip + pclip((103.285,226.09)--(103.328,232.602)..controls (103.328,232.602) and (103.5,234.191)..(104.098,234.547) + ..controls (104.48,234.77) and (105.055,234.641)..(105.418,234.383) + ..controls (106.098,233.898) and (106.52,232.129)..(106.52,232.129) + --(106.527,225.949)--(113.855,225.813)--(113.918,246.52) + --(97.8672,246.582)--(98.4844,226.156)--cycle); + + + pfill((103.082,197.922)..controls (103.082,197.922) and (102.113,200.516)..(101.844,201.867) + ..controls (101.512,203.547) and (101.418,205.273)..(101.395,206.984) + ..controls (101.375,208.434) and (101.484,209.883)..(101.656,211.32) + ..controls (101.727,211.895) and (101.809,212.469)..(101.965,213.02) + ..controls (102.219,213.91) and (102.984,215.602)..(102.984,215.602) + --(103.336,217.145)--(103.543,232.656)..controls (103.543,232.656) and (103.715,234.043)..(104.238,234.355) + ..controls (104.535,234.527) and (104.98,234.434)..(105.262,234.234) + ..controls (105.883,233.785) and (106.242,232.152)..(106.242,232.152) + --(106.219,216.918)--(104.09,216.141)--(108.305,217.367) + --(109.813,216.969)--(109.332,216.262)..controls (109.332,216.262) and (110.512,212.852)..(110.551,211.074) + ..controls (110.578,210) and (109.957,207.902)..(109.957,207.902) + ..controls (109.957,207.902) and (109.84,209.332)..(109.766,210.043) + ..controls (109.668,210.945) and (109.699,211.875)..(109.426,212.738) + ..controls (109.125,213.684) and (108.883,214.867)..(108.023,215.359) + ..controls (107.375,215.73) and (105.789,215.277)..(105.789,215.277) + ..controls (105.789,215.277) and (107.363,215.445)..(107.973,215.035) + ..controls (108.711,214.543) and (109.254,212.699)..(109.254,212.699) + --(109.73,207.82)..controls (109.73,207.82) and (109.016,206.699)..(108.453,206.711) + ..controls (107.98,206.723) and (107.422,207.691)..(107.422,207.691) + --(106.992,211.371)..controls (106.992,211.371) and (106.434,212.434)..(105.918,212.547) + ..controls (105.273,212.691) and (104.09,211.793)..(104.09,211.793) + ..controls (104.09,211.793) and (105.199,212.168)..(105.688,211.949) + ..controls (106.117,211.762) and (106.48,211.152)..(106.523,210.82) + --(106.945,207.695)..controls (107.066,206.789) and (106.309,204.98)..(106.309,204.98) + --(106.992,201.652)--(106.648,204.984)--(107.402,206.777) + ..controls (107.402,206.777) and (108.063,206.238)..(108.445,206.27) + ..controls (109.074,206.328) and (109.98,207.379)..(109.98,207.379) + ..controls (109.98,207.379) and (110.34,208.18)..(110.445,208.605) + ..controls (110.676,209.535) and (110.801,211.457)..(110.801,211.457) + --(109.605,216.355)..controls (109.605,216.355) and (110.219,217.41)..(110.75,217.555) + ..controls (111.293,217.703) and (112.375,217.105)..(112.375,217.105) + ..controls (112.375,217.105) and (113.715,212.871)..(113.867,210.676) + ..controls (114.008,208.578) and (113.727,206.449)..(113.293,204.395) + ..controls (112.977,202.883) and (112.336,201.461)..(111.82,200.004) + ..controls (111.262,198.43) and (110.059,195.305)..(110.059,195.305) + ..controls (110.059,195.305) and (109.164,192.789)..(108.551,191.613) + ..controls (107.93,190.422) and (106.367,188.227)..(106.367,188.227) + --(101.094,191.605)..controls (101.094,191.605) and (102.539,193.98)..(102.895,195.305) + ..controls (103.121,196.152) and (103.082,197.922)..(103.082,197.922) + --cycle); + pfill((108.043,226.168)--(106.352,226.164)--(106.316,216.859) + --(107.926,217.348)--cycle); + pfill((99.5195,191.504)--(107.18,186.832)--(105.055,184.047) + --(97.5352,188.602)--cycle^^(96.5664,188.785)--(97.7734,190.363) + --(91.0352,212.984)--(95.1289,215.895)--(90.8047,218.234) + --(94.1563,223.543)..controls (94.1563,223.543) and (87.1328,223.648)..(83.6836,223.105) + ..controls (80.875,222.668) and (77.7344,222.551)..(75.4648,220.84) + ..controls (71.3086,217.715) and (68.9648,212.473)..(67.3203,207.539) + ..controls (64.9727,200.488) and (65.2383,185.344)..(65.2383,185.344) + --(63.4375,164.863)..controls (63.4375,164.863) and (66.1641,156.422)..(69.6992,154.441) + ..controls (72.2031,153.043) and (75.5898,153.586)..(78.3047,154.52) + ..controls (81.8477,155.734) and (87.2305,161.344)..(87.2305,161.344) + --(106.461,182.973)--(105.648,183.344)--(107.918,187.063) + --(99.3672,192.305)--(96.5859,188.492)--(95.3984,189.223) + --(77.5117,172.465)--(73.6406,161.082)--(77.0313,173.246) + --(79.3984,201.207)--(83.5742,209.949)--(80.0078,200.777) + --(77.4883,173.336)--(95.3164,189.492)--cycle); + pfill((113.379,234.379)..controls (113.379,234.379) and (115.535,237.82)..(116.281,239.695) + ..controls (117.98,243.977) and (119.152,248.5)..(119.789,253.063) + ..controls (120.27,256.484) and (120.461,260)..(120.012,263.426) + ..controls (119.762,265.363) and (118.387,269.063)..(118.387,269.063) + --(119.887,272.801)--(118.195,272.164)--(117.48,274.246) + --(114.43,271.066)--(114.617,272.047)--(113.988,270.91) + --(112.816,270.453)--(113.016,271.5)--(112.508,270.441) + --(111.578,270.273)--(111.602,271.379)--(111.18,270.246) + --(111.277,271.043)--(110.652,270.195)--(109.336,269.965) + --(109.465,270.789)--(109.027,269.918)--(107.93,269.809) + --(107.996,270.941)--(107.504,269.758)--(104.617,269.555) + --(104.777,270.664)--(104.176,269.539)--(103.43,269.68) + --(103.844,270.953)--(103.133,269.75)--(103.469,270.797) + --(102.668,269.898)--(101.281,270.242)--(101.664,271.141) + --(100.887,270.34)--(101.27,271.449)--(100.504,270.453) + --(98.957,271.055)--(99.5781,272.082)--(98.6445,271.203) + --(97.9297,271.445)--(98.5664,272.59)--(97.6016,271.52) + --(97.0195,271.594)..controls (97.0195,271.594) and (92.2266,272.762)..(90.4023,274.297) + ..controls (89.3047,275.223) and (88.6094,276.598)..(88.1211,277.949) + ..controls (86.3398,282.852) and (85.9688,293.445)..(85.9688,293.445) + ..controls (85.9688,293.445) and (84.043,281.703)..(85.2539,276.016) + ..controls (85.7109,273.867) and (86.6484,271.688)..(88.1836,270.117) + ..controls (89.8086,268.453) and (94.3594,266.859)..(94.3594,266.859) + ..controls (94.3594,266.859) and (92.6875,264.004)..(92.3477,262.414) + ..controls (91.6406,259.117) and (91.918,255.641)..(92.3789,252.301) + ..controls (93.0195,247.641) and (94.332,243.039)..(96.1406,238.695) + ..controls (96.7539,237.215) and (98.5234,234.52)..(98.5234,234.52) + --(98.4375,244.82)..controls (98.4375,244.82) and (98.6563,245.672)..(98.9297,245.996) + ..controls (99.1406,246.242) and (99.7617,246.508)..(99.7617,246.508) + --(112.297,246.473)..controls (112.297,246.473) and (112.898,246.168)..(113.102,245.91) + ..controls (113.273,245.688) and (113.406,245.121)..(113.406,245.121) + --cycle); + pfill((116.102,273.07)..controls (116.102,273.07) and (114.305,275.055)..(113.113,275.574) + ..controls (111.109,276.453) and (108.785,276.496)..(106.598,276.414) + ..controls (104.082,276.32) and (101.559,275.777)..(99.1992,274.891) + ..controls (97.6211,274.297) and (94.7969,272.395)..(94.7969,272.395) + --(95.0859,272.246)..controls (95.0859,272.246) and (97.7422,274.098)..(99.2422,274.672) + ..controls (101.559,275.559) and (104.051,276.078)..(106.531,276.18) + ..controls (108.707,276.27) and (111.016,276.25)..(113.016,275.391) + ..controls (114.188,274.887) and (115.969,272.949)..(115.969,272.949) + --cycle); + pfill((101.039,271.563)..controls (101.039,271.563) and (101.879,273.918)..(102.77,274.723) + ..controls (103.07,274.992) and (103.492,275.109)..(103.887,275.191) + ..controls (104.152,275.25) and (104.699,275.207)..(104.699,275.207) + ..controls (104.699,275.207) and (103.406,274.941)..(102.914,274.543) + ..controls (102.004,273.801) and (101.742,272.531)..(101.039,271.563) + --cycle); + pfill((104.801,270.348)..controls (104.801,270.348) and (105.398,273.121)..(106.199,274.246) + ..controls (106.551,274.734) and (107.09,275.078)..(107.617,275.371) + ..controls (107.906,275.531) and (108.547,275.703)..(108.547,275.703) + ..controls (108.547,275.703) and (106.945,274.871)..(106.398,274.188) + ..controls (105.531,273.105) and (105.465,271.691)..(104.801,270.348) + --cycle); + pfill((108.148,270.703)..controls (108.148,270.703) and (108.402,273.164)..(109.137,274.074) + ..controls (109.539,274.574) and (110.238,274.746)..(110.832,274.996) + ..controls (111.082,275.102) and (111.613,275.234)..(111.613,275.234) + ..controls (111.613,275.234) and (109.926,274.625)..(109.363,273.969) + ..controls (108.609,273.086) and (108.148,270.703)..(108.148,270.703) + --cycle); + pfill((93.0625,267.191)--(92.0273,261.695)..controls (92.0273,261.695) and (92.0977,263.617)..(92.2422,264.563) + ..controls (92.3789,265.473) and (92.8633,267.246)..(92.8633,267.246) + --cycle); + pfill((118.625,269.141)--(120.102,264.195)--(118.883,269.527) + --cycle); + pfill((98.5,224.551)--(94.4219,223.473)--(91.0898,218.383) + --(95.5547,215.957)--(91.3789,212.863)--(98.0742,191.125) + --(99.3672,192.836)--(100.762,192.047)--(97.0273,220.957) + --cycle); + pfill((114.367,210.965)--(113.957,212.289)--(115.039,221.035) + --(113.566,224.625)--(117.645,223.551)--(120.977,218.457) + --(116.512,216.031)--(120.688,212.941)--(106.648,163.625) + ..controls (106.777,169.84) and (113.766,196.402)..(113.875,204.035) + --cycle); + pfill((98.5156,224.648)--(98.1836,224.574)--(98.9297,227.625) + --(98.9922,227.035)--cycle); + pfill((103.203,217.188)--(102.73,225.66)--(101.648,226.227) + --(101.371,226.18)--(102.402,225.563)--(102.16,221.063) + --(98.668,224.695)--(98.6328,224.438)--(102.301,220.699) + --(102.621,225.309)--(103.078,216.801)--cycle); + pfill((113.551,224.691)--(113.883,224.617)--(113.137,227.672) + --(113.074,227.082)--cycle); + pfill((110.379,226.27)--(110.727,226.254)--(109.66,225.609) + --(109.906,221.105)--(113.398,224.742)--(113.434,224.484) + --(109.766,220.746)--(109.445,225.355)--(108.918,217.332) + --(108.773,217.402)--(109.281,225.66)--cycle); + pfill((104.488,180.508)--(106.766,167.203)--(102.852,178.652) + --cycle); + pfill((102.598,178.137)--(106.582,166.707)--(106.27,164.133) + ..controls (106.27,164.133) and (104.344,157.867)..(103.895,154.633) + ..controls (103.395,151.063) and (103.539,143.82)..(103.539,143.82) + --(104.434,127.863)--(78.9805,131.43)--(78.7109,153.891) + ..controls (78.7109,153.891) and (82.5352,156.242)..(84.2109,157.719) + ..controls (91.0781,163.781) and (102.598,178.137)..(102.598,178.137) + --cycle); + pfill((136.863,178.516)--(135.297,187.859)--(133.809,197.41) + --(132.227,204.008)--(132.879,197.473)--(132.352,130.918) + --(104.906,128.172)..controls (104.906,128.172) and (103.379,145.25)..(104.258,153.727) + ..controls (104.574,156.766) and (106.367,162.648)..(106.367,162.648) + --(107.145,163.766)--(121.074,213.027)--(116.961,216.016) + --(121.371,218.422)--(118.098,223.27)..controls (118.098,223.27) and (126.023,223.324)..(129.918,222.684) + ..controls (133.152,222.152) and (136.832,222.055)..(139.383,219.992) + ..controls (142.879,217.168) and (144.371,212.379)..(145.711,208.09) + ..controls (148.957,197.684) and (149.52,175.609)..(149.52,175.609) + ..controls (149.52,175.609) and (147.574,170.664)..(145.863,168.699) + ..controls (142.492,164.824) and (133.371,159.68)..(133.371,159.68) + --(133.512,174.23)--(136.609,177.996)--(142.348,173.789) + --cycle); + pfill((83.4297,78.2578)..controls (83.6953,60.7773) and (83.1484,25.8164)..(83.1484,25.8164) + --(101.34,26.2031)..controls (101.34,26.2031) and (101.375,56.3672)..(102.527,71.3906) + ..controls (102.891,76.1445) and (104.336,85.582)..(104.336,85.582) + --(105.422,107.16)--(108,85.4844)..controls (108,85.4844) and (109.555,75.8789)..(109.836,71.0313) + ..controls (110.684,56.4375) and (109.391,27.1719)..(109.391,27.1719) + --(127.727,26.3555)..controls (127.727,26.3555) and (128.328,62.1602)..(128.496,80.0625) + ..controls (128.563,87.3398) and (128.348,94.6172)..(128.59,101.887) + ..controls (128.906,111.242) and (130.352,129.91)..(130.352,129.91) + --(104.676,127.008)--(80.6445,130.746)..controls (80.6445,130.746) and (82.0273,113.184)..(82.4922,104.391) + ..controls (82.9531,95.6836) and (83.2969,86.9727)..(83.4297,78.2578) + --cycle); + pfill((98.832,25.7227)--(86.6133,25.5469)--(86.875,15.1953) + ..controls (86.875,15.1953) and (90.8438,17.1953)..(92.6523,17.2695) + ..controls (94.5234,17.3477) and (98.9219,15.0547)..(98.9219,15.0547) + --cycle); + pfill((86.1055,13.5078)..controls (84.9414,11.9844) and (85.082,6.90234)..(85.082,6.90234) + --(100.508,6.83984)..controls (100.508,6.83984) and (100.957,11.7109)..(99.8867,13.2969) + ..controls (98.5078,15.3359) and (95.3672,16.957)..(92.6758,16.9375) + ..controls (90.2031,16.9219) and (87.5469,15.3945)..(86.1055,13.5078) + --cycle); + pfill((118.152,17.4336)..controls (120.105,17.418) and (123.605,15.3047)..(123.605,15.3047) + --(124.238,26.125)--(112.488,26.4961)--(112.641,15.3789) + ..controls (112.641,15.3789) and (116.191,17.4492)..(118.152,17.4336) + --cycle); + pfill((110.762,12.6875)..controls (109.594,11.2109) and (110.328,7.20313)..(110.328,7.20313) + --(125.316,7.21484)..controls (125.316,7.21484) and (126.199,11.6016)..(124.945,13.3125) + ..controls (123.723,14.9766) and (120.625,16.9844)..(118.023,16.9258) + ..controls (115.223,16.8594) and (112.25,14.5664)..(110.762,12.6875) + --cycle); +} diff --git a/faces/prince_of_wheels.asy b/faces/prince_of_wheels.asy new file mode 100644 index 0000000..727e8af --- /dev/null +++ b/faces/prince_of_wheels.asy @@ -0,0 +1,262 @@ +import "scaling.asy" as scaling; + +picture prince_of_wheels = new picture; + +currentpen=rgb(0,0,1)+evenodd; + +fill(prince_of_wheels, (179.777,140.586)..controls (179.777,181.453) and (146.648,214.582)..(105.781,214.582) + ..controls (64.9141,214.582) and (31.7852,181.453)..(31.7852,140.586) + ..controls (31.7852,99.7188) and (64.9141,66.5898)..(105.781,66.5898) + ..controls (146.648,66.5898) and (179.777,99.7188)..(179.777,140.586) + --cycle^^(113.18,140.586)..controls (113.18,144.672) and (109.867,147.984)..(105.781,147.984) + ..controls (101.695,147.984) and (98.3828,144.672)..(98.3828,140.586) + ..controls (98.3828,136.5) and (101.695,133.184)..(105.781,133.184) + ..controls (109.867,133.184) and (113.18,136.5)..(113.18,140.586) + --cycle^^(115.199,152.004)..controls (113.941,153.039) and (112.512,153.871)..(110.961,154.453) + --(110.961,199.559)..controls (128.863,198.008) and (144.488,188.484)..(154.266,174.559) + --cycle^^(100.602,154.449)..controls (99.0742,153.879) and (97.6406,153.059)..(96.3594,152.004) + --(57.2969,174.559)..controls (67.5938,189.289) and (83.6523,198.059)..(100.602,199.563) + --cycle^^(91.1836,143.031)..controls (90.9141,141.426) and (90.9063,139.773)..(91.1797,138.137) + --(52.1172,115.586)..controls (44.5078,131.867) and (44.9453,150.156)..(52.1172,165.586) + --cycle^^(96.3633,129.168)..controls (97.6211,128.133) and (99.0469,127.297)..(100.602,126.719) + --(100.602,81.6094)..controls (82.6953,83.1641) and (67.0742,92.6875)..(57.2969,106.613) + --cycle^^(110.961,126.723)..controls (112.484,127.289) and (113.922,128.109)..(115.199,129.164) + --(154.262,106.613)..controls (143.969,91.8828) and (127.91,83.1133)..(110.961,81.6094) + --cycle^^(120.379,138.141)..controls (120.648,139.746) and (120.652,141.398)..(120.379,143.031) + --(159.441,165.586)..controls (167.051,149.305) and (166.617,131.012)..(159.445,115.582) + --cycle); + +clip(prince_of_wheels, (134.277,89.8906)--(136.305,90.3516)..controls (136.305,90.3516) and (137.547,86.6016)..(138,84.6836) + ..controls (138.363,83.1563) and (138.703,81.6094)..(138.816,80.043) + ..controls (138.973,77.8594) and (138.617,73.4805)..(138.617,73.4805) + --(114.488,61.3359)--(68.9922,71.1914)--(52.8672,85.6523) + --(44.4297,87.5859)--(48.2031,103.055)--(49.75,115.203) + ..controls (53.207,115.043) and (56.4297,113.426)..(59.7656,112.52) + ..controls (63.6133,111.473) and (67.3672,110.008)..(71.2969,109.328) + ..controls (80.4453,107.746) and (89.8047,106.863)..(99.0781,107.309) + ..controls (104.363,107.559) and (114.727,109.965)..(114.727,109.965) + --cycle^^(144.355,158.891)--(154.496,163.105)--(148.664,185.234) + --(152.184,194.055)--(160.695,195.492)--(182.863,170.512) + --(185.672,124.598)--(161.316,88.4063)--(153.469,79.0547) + ..controls (153.469,79.0547) and (150.656,81.8672)..(149.801,83.625) + ..controls (148.496,86.3164) and (147.777,92.375)..(147.777,92.375) + --(149.492,92.5781)..controls (149.492,92.5781) and (149.188,115.629)..(148.281,127.109) + ..controls (147.438,137.75) and (144.355,158.891)..(144.355,158.891) + --cycle^^(53.8828,162.859)..controls (53.8828,162.859) and (46.4102,169.848)..(46.6797,173.652) + ..controls (46.9727,177.852) and (53.1211,182.574)..(55.8477,185.785) + ..controls (58.6836,189.125) and (67.1758,192.461)..(67.1758,192.461) + --(71.9805,207.727)--(58.4727,202.383)--(37.375,178.688) + --(26.4688,145.484)--(25.3555,124.895)..controls (25.3555,124.895) and (29.7344,132.813)..(33.0195,135.809) + ..controls (35.3828,137.965) and (38.2969,139.609)..(41.3438,140.574) + ..controls (43.1602,141.148) and (47.0352,141.098)..(47.0352,141.098) + --(51.0938,140.895)--cycle); + +fill(prince_of_wheels, (116.672,238.441)..controls (114.48,233.309) and (110.031,229.188)..(104.746,227.391) + ..controls (102.074,229.609) and (99.7578,232.262)..(97.918,235.207) + ..controls (95.4727,239.117) and (93.875,243.52)..(92.9219,248.031) + ..controls (91.6172,254.211) and (91.5039,260.641)..(92.5938,266.867) + ..controls (96.7617,268.102) and (101.082,268.84)..(105.426,269.051) + ..controls (109.715,269.262) and (114.023,268.961)..(118.242,268.164) + ..controls (118.926,262.238) and (119.133,256.254)..(118.859,250.293) + ..controls (118.68,246.258) and (118.258,242.156)..(116.672,238.441) + --cycle); +fill(prince_of_wheels, (101.551,229.383)..controls (102.508,228.344) and (103.535,227.371)..(104.621,226.477) + ..controls (106.496,226.973) and (108.289,227.797)..(109.883,228.902) + ..controls (111.156,229.781) and (112.309,230.836)..(113.293,232.027) + --(111.879,217.848)--(119.754,216.207)..controls (121.25,209.848) and (122.418,203.414)..(123.262,196.938) + ..controls (123.895,192.047) and (124.344,187.133)..(124.602,182.207) + ..controls (122.332,178.813) and (120.383,175.199)..(118.797,171.438) + ..controls (115.457,163.508) and (113.73,154.902)..(113.762,146.297) + ..controls (110.906,145.563) and (107.949,145.23)..(105.008,145.316) + ..controls (102.734,145.383) and (100.477,145.695)..(98.2266,146.023) + ..controls (95.5,146.414) and (92.7734,146.828)..(90.0508,147.258) + --(87.2852,173.781)--(82.3281,190.051)--(79.0977,171.316) + ..controls (78.7734,168.938) and (77.4297,166.719)..(75.4766,165.324) + ..controls (73.5234,163.93) and (70.9883,163.383)..(68.6367,163.848) + ..controls (67.0313,164.164) and (65.5195,164.934)..(64.3242,166.047) + ..controls (63.1289,167.16) and (62.25,168.613)..(61.8203,170.188) + --(72.7617,207.195)..controls (72.6406,208.934) and (73.1992,210.715)..(74.2969,212.07) + ..controls (75.3906,213.426) and (77.0156,214.344)..(78.7422,214.586) + ..controls (80.5625,214.84) and (82.3906,214.371)..(84.2148,214.141) + ..controls (89.168,213.508) and (94.3359,214.684)..(98.5273,217.395) + --(98.9219,232.668)..controls (99.7227,231.516) and (100.602,230.418)..(101.551,229.383) + --cycle); +fill(prince_of_wheels, (153.547,163.379)--(147.75,185.031)--(156.152,207.055) + --(127.91,215.547)--(128.273,209.891)--(133.184,199.379) + --(127.352,208.961)--(126.344,222.313)--(113.078,222.008) + --(112.945,218.641)--(120.68,217.027)..controls (122.016,211.008) and (123.121,204.938)..(123.992,198.832) + ..controls (124.77,193.371) and (125.359,187.883)..(125.762,182.379) + ..controls (129.207,183.184) and (132.98,182.473)..(135.895,180.465) + ..controls (138.117,178.934) and (139.816,176.703)..(140.902,174.23) + ..controls (141.938,171.863) and (142.422,169.297)..(142.867,166.754) + ..controls (144.871,155.402) and (146.313,143.953)..(147.223,132.461) + ..controls (147.965,123.102) and (148.355,113.711)..(148.387,104.32) + --(133.523,99.1914)..controls (129.07,112.445) and (126.098,126.191)..(124.688,140.102) + ..controls (124.008,146.797) and (123.688,153.531)..(123.727,160.262) + --(121.445,164.074)--(122.582,158.27)..controls (122.469,152.102) and (122.688,145.93)..(123.234,139.785) + ..controls (124.5,125.508) and (127.547,111.387)..(132.281,97.8555) + --(133.461,88.9453)--(136.758,89.5469)--(136.266,91.5117) + --(134.352,90.4883)--(133.977,97.3477)--(148.457,102.645) + --(148.762,93.5586)--(147.625,92.9258)--(147.934,91.2109) + --(149.859,91.5273)..controls (150.281,106.574) and (149.844,121.648)..(148.551,136.648) + ..controls (147.867,144.555) and (146.949,152.438)..(145.793,160.289) + --cycle); +fill(prince_of_wheels, (112.859,126.52)--(114.121,145.023)--(112.781,144.77) + --(111.625,127.504)--cycle); + +picture arm = new picture; +fill(arm, (158.23,194.445)--(158.797,172.645)--(171.938,172.719) + --(169.594,207.563)..controls (169.594,207.563) and (168.727,209.602)..(167.895,210.27) + ..controls (164.949,212.629) and (160.938,213.395)..(157.223,214.055) + ..controls (150.441,215.254) and (136.57,214.262)..(136.57,214.262) + --(131.957,215.844)..controls (131.957,215.844) and (149.277,217.25)..(157.695,215.586) + ..controls (161.707,214.793) and (165.734,213.375)..(169.086,211.027) + ..controls (169.805,210.523) and (170.84,209.063)..(170.84,209.063) + --(173.086,181.75)--(173.277,159.711)--(169.426,160.387) + --(169.523,162.32)--(171.992,161.293)--(171.813,170.738) + --(159.207,170.684)--(157.652,160.391)--(158.492,160.586) + --(158.594,158.633)--(156.398,158.188)--(157.348,170.207) + --(157.203,194.359)--(151.398,193.008)--(152.059,194.977) + --(157.93,195.496)--(161.547,196.082)--cycle); +fill(arm, (159.691,162.434)--(160.152,153.223)..controls (160.152,153.223) and (157.598,150.797)..(157.199,149.176) + ..controls (156.691,147.102) and (156.914,144.578)..(158.16,142.844) + ..controls (159.051,141.605) and (160.746,141.113)..(162.23,140.75) + ..controls (163.371,140.469) and (164.629,140.395)..(165.758,140.73) + ..controls (167.055,141.117) and (168.453,141.801)..(169.145,142.965) + ..controls (170.195,144.734) and (170.133,147.113)..(169.668,149.117) + ..controls (169.367,150.414) and (167.609,152.539)..(167.609,152.539) + --(168.125,162.238)--cycle); +clip(arm, (126.957,221.398)--(178.277,221.398)--(178.277,135.508) + --(126.957,135.508)--cycle^^(175.57,135.57)--(175.398,168.445) + --(170.508,178.887)--(169.184,181.289)--(165.309,187.23) + --(159.254,192.977)--(157.746,194.664)--(155.746,193.984) + --(155.535,182.531)--(155.602,162.543)--(159.055,164.586) + --(161.082,160.539)--(162.609,153.922)--(164.063,146.563) + --(164.289,137.918)--(171.672,136.129)--cycle); + +add(prince_of_wheels, arm); + +fill(prince_of_wheels, (41.6445,81.2109)..controls (40.5664,77.9922) and (37.9648,71.7148)..(37.9648,71.7148) + --(22.8516,76.2617)..controls (22.8516,76.2617) and (25.082,97.7031)..(27.0234,108.297) + ..controls (28.6172,116.992) and (33.1484,134.105)..(33.1484,134.105) + ..controls (34.5469,137.094) and (40.3047,139.66)..(44.5938,140.176) + ..controls (56.3047,141.586) and (78.8945,131.473)..(78.8945,131.473) + --(89.4258,120.863)--(80.1563,132.449)--(84.6523,139.109) + --(88.7109,146.566)..controls (88.7109,146.566) and (88.0273,164.199)..(86.3516,172.828) + ..controls (85.4805,177.324) and (82.3789,185.977)..(82.3789,185.977) + --(80.5859,170.543)..controls (80.0273,165.742) and (73.3438,162.07)..(68.5273,162.484) + ..controls (65.0195,162.785) and (59.9805,166.359)..(60.8789,169.766) + --(66.3867,190.688)..controls (66.3867,190.688) and (59.4492,187.504)..(56.6055,185.039) + ..controls (52.8594,181.785) and (47.6953,177.242)..(47.4258,173.332) + ..controls (47.1719,169.688) and (52.3867,166.691)..(54.875,163.375) + ..controls (57.418,159.992) and (59.3867,156.082)..(62.5195,153.234) + ..controls (68.6797,147.633) and (83.8086,140.164)..(83.8086,140.164) + --(78.2617,133.344)--(70.7422,136.199)--(73.5195,145.133) + --(71.7188,146.195)--(69.0664,136.758)--(56.2969,140.492) + --(59.0273,156.672)--(57.8008,158.344)--(54.2227,141.09) + ..controls (54.2227,141.09) and (46.7617,142.402)..(43.1641,141.578) + ..controls (38.9219,140.605) and (33.0977,138.344)..(31.6719,135.379) + ..controls (31.6719,135.379) and (27.1133,118.422)..(25.5664,109.789) + ..controls (22.8867,94.8633) and (20.0781,64.625)..(20.0781,64.625) + --(22.457,64.0273)--(22.9141,65.6719)--(21.3164,66.8242) + --(23.0195,74.0156)--(37.3281,69.5898)--(34.8555,61.9844) + --(33.3984,62.4063)--(33.4023,59.7969)--(35.0313,59.3164) + ..controls (35.0313,59.3164) and (43.9805,82.957)..(46.9688,95.2031) + ..controls (48.2266,100.359) and (48.8867,105.648)..(49.4609,110.922) + ..controls (49.6016,112.203) and (49.6953,114.781)..(49.6953,114.781) + ..controls (49.6953,114.781) and (66.1875,109.188)..(74.7227,107.613) + ..controls (80.8125,106.488) and (87.043,105.734)..(93.2266,106.02) + ..controls (103.555,106.488) and (113.918,108.301)..(123.754,111.488) + ..controls (125.066,111.914) and (127.484,113.289)..(127.484,113.289) + --(127.348,114.664)..controls (127.348,114.664) and (124.527,113.211)..(123.02,112.75) + ..controls (113.348,109.805) and (103.25,107.855)..(93.1445,107.488) + ..controls (87.1211,107.266) and (81.082,108.246)..(75.1484,109.316) + ..controls (66.5195,110.871) and (49.7031,115.965)..(49.7031,115.965) + --(47.2539,120.152)--(48.9883,114.992)..controls (48.9883,114.992) and (48.9023,112.574)..(48.7734,111.375) + ..controls (48.375,107.645) and (47.8516,103.922)..(47.0508,100.258) + ..controls (45.6406,93.8125) and (43.7422,87.4688)..(41.6445,81.2109) + --cycle); +fill(prince_of_wheels, (98.25,220.633)--(85.1172,219.105)--(83.25,214.617) + ..controls (83.25,214.617) and (87.7227,214.207)..(89.918,214.57) + ..controls (92.7539,215.039) and (98.0664,217.398)..(98.0664,217.398) + --cycle); +fill(prince_of_wheels, (147.02,93.2305)..controls (147.02,93.2305) and (148.098,86.3047)..(149.082,83.3828) + ..controls (149.656,81.6875) and (151.32,80.8125)..(151.844,79.2344) + ..controls (154.355,71.6445) and (158.246,61.3945)..(153.094,55.2813) + ..controls (151.813,53.7578) and (148.879,53.5664)..(147.164,54.5742) + ..controls (141.332,58.0039) and (140.84,66.7344)..(139.469,73.3594) + ..controls (138.949,75.8867) and (139.469,79.1602)..(139.32,81.0977) + ..controls (139.098,84.043) and (137.004,90.3477)..(137.004,90.3477) + --cycle); +fill(prince_of_wheels, (33.4805,62.9258)..controls (33.4805,62.9258) and (31.3867,58.8203)..(30.6211,56.1367) + --(28.3086,48.125)--(10.9844,36.2578)..controls (2.35938,35.0703) and (7.05469,43.2695)..(8.02344,46.7852) + ..controls (9.78125,53.1641) and (21.2188,58.1836)..(22.4336,60.4414) + ..controls (23.4063,62.2461) and (24.3281,66.1641)..(24.3281,66.1641) + --cycle); +fill(prince_of_wheels, (138.621,233.465)--(140,237.934)..controls (140,237.934) and (137.754,235.957)..(136.395,235.398) + ..controls (135.242,234.922) and (133.961,234.75)..(132.715,234.766) + ..controls (130.781,234.785) and (128.707,234.926)..(127.012,235.867) + ..controls (125.77,236.555) and (124.793,237.742)..(124.109,238.988) + ..controls (123.531,240.043) and (123.012,241.293)..(123.199,242.484) + ..controls (123.438,244.012) and (125.676,246.406)..(125.676,246.406) + ..controls (125.676,246.406) and (124.273,249.227)..(124.25,250.746) + ..controls (124.223,252.43) and (125.766,253.91)..(125.664,255.59) + ..controls (125.602,256.652) and (124.414,258.527)..(124.414,258.527) + --(127.32,261.879)--(124.742,263.637)--(125.719,266.188) + --(121.051,268.918)--(124.77,276.281)--(115.953,273.02) + --(119.047,277.652)--(111.441,273.922)--(113.496,279.574) + --(104.973,274.508)--(107.25,279.688)--(100.82,275.145) + --(102.637,280.699)..controls (102.637,280.699) and (98.5703,278.609)..(97.4141,276.758) + ..controls (96.7656,275.715) and (96.7148,273.141)..(96.7148,273.141) + --(90.2344,278.176)--(88.7773,272.66)--(85.125,273.508) + --(88.2734,262.68)..controls (88.2734,262.68) and (86.0313,257.762)..(85.3438,255.16) + ..controls (84.9922,253.828) and (84.5117,252.43)..(84.75,251.07) + ..controls (84.9609,249.848) and (86.5039,247.777)..(86.5039,247.777) + --(81.8008,243.816)--(86.5781,238.598)..controls (86.5781,238.598) and (79.1719,234.879)..(75.1602,234.789) + ..controls (73.1328,234.746) and (69.3086,236.465)..(69.3086,236.465) + ..controls (69.3086,236.465) and (70.2148,232.418)..(71.1484,230.59) + ..controls (71.5664,229.77) and (72.8008,228.375)..(72.8008,228.375) + ..controls (72.8008,228.375) and (70.1328,227.359)..(69.2617,226.309) + ..controls (68.293,225.137) and (67.7383,222.016)..(67.7383,222.016) + --(69.4102,222.285)--(65.6328,219.625)--(75.4883,221.441) + --(69.3984,216.359)--(77.5898,213.941)--(77.9648,214.664) + --(70.6367,216.559)..controls (70.6367,216.559) and (73.0742,219.121)..(74.5313,220.09) + ..controls (76.7695,221.574) and (81.8398,223.488)..(81.8398,223.488) + --(66.9727,220.258)--(73.7266,224.324)--(68.4414,222.512) + ..controls (68.4414,222.512) and (68.9609,225.129)..(69.7852,226.105) + ..controls (70.7188,227.219) and (73.5508,228.305)..(73.5508,228.305) + ..controls (73.5508,228.305) and (72.0547,230.07)..(71.543,231.098) + ..controls (70.8555,232.484) and (70.1758,235.535)..(70.1758,235.535) + ..controls (70.1758,235.535) and (73.3828,234.18)..(75.0742,234.227) + ..controls (79.4297,234.348) and (87.4922,238.309)..(87.4922,238.309) + --(82.6719,243.859)--(87.2695,247.75)..controls (87.2695,247.75) and (85.5547,249.898)..(85.3164,251.199) + ..controls (85.0938,252.434) and (85.5703,253.703)..(85.8945,254.91) + ..controls (86.6211,257.598) and (88.9375,262.688)..(88.9375,262.688) + --(85.9492,272.891)--(89.0938,271.914)--(90.6094,277.316) + --(96.7734,272.129)..controls (96.7734,272.129) and (97.3438,275.074)..(98.1406,276.301) + ..controls (99.0508,277.711) and (101.859,279.691)..(101.859,279.691) + --(99.8125,273.641)--(106.547,278.68)--(103.668,273.047) + --(112.746,278.66)--(110.18,272.398)--(118.039,276.898) + --(114.594,272.031)--(123.852,275.34)--(120.152,268.586) + --(125.094,266.164)--(123.902,263.355)--(126.43,262.047) + --(123.824,258.633)..controls (123.824,258.633) and (125.02,256.633)..(125.066,255.516) + ..controls (125.137,253.875) and (123.605,252.441)..(123.641,250.801) + ..controls (123.676,249.289) and (125.152,246.523)..(125.152,246.523) + ..controls (125.152,246.523) and (122.898,244.316)..(122.605,242.859) + ..controls (122.328,241.461) and (122.832,239.934)..(123.512,238.68) + ..controls (124.23,237.352) and (125.375,236.18)..(126.703,235.457) + ..controls (128.492,234.488) and (130.652,234.328)..(132.688,234.219) + ..controls (134.039,234.148) and (135.461,234.125)..(136.723,234.613) + ..controls (137.766,235.016) and (139.406,236.609)..(139.406,236.609) + --(137.715,233.035)--(139.617,232.195)--(135.363,228.488) + --(139.172,228.883)--(134.758,223.285)--(139.578,224.371) + ..controls (139.578,224.371) and (139.609,222.699)..(139.188,222.035) + ..controls (138.309,220.652) and (136.582,220.027)..(135.141,219.25) + ..controls (133.801,218.527) and (130.91,217.535)..(130.91,217.535) + --(131.324,216.926)..controls (131.324,216.926) and (134.152,217.852)..(135.461,218.543) + ..controls (136.996,219.355) and (138.906,219.98)..(139.762,221.496) + ..controls (140.328,222.492) and (139.973,224.93)..(139.973,224.93) + --(136.273,224.242)--(140.066,229.316)--(136.875,229.309) + --(140.406,232.289)--cycle); + +prince_of_wheels = shift(-width/2, -height/2)*prince_of_wheels;