completed count of cards

This commit is contained in:
xenofem 2022-07-31 05:50:50 -04:00
parent 3786db7d6d
commit b327e615d6
7 changed files with 726 additions and 26 deletions

29
cards-faces.asy Normal file
View file

@ -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),
};

View file

@ -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;
}

View file

@ -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" /></clipPath><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1488-3"><path
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 L 63.695447,86.906611 66.9281,193.77399 Z"
id="path1490-5"
sodipodi:nodetypes="ccaaccccccc" /></clipPath></defs><sodipodi:namedview
id="namedview206"
pagecolor="#ffffff"
@ -32,14 +38,14 @@
inkscape:document-units="pt"
showgrid="false"
inkscape:zoom="2.02"
inkscape:cx="151.48515"
inkscape:cy="205.19802"
inkscape:cx="149.50495"
inkscape:cy="170.0495"
inkscape:window-width="782"
inkscape:window-height="1301"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2" /><g
inkscape:current-layer="svg204" /><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="base card"><g
@ -170,6 +176,114 @@
style="vector-effect:non-scaling-stroke;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.983351;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 274.5652,492.41872 c -1.17122,1.47963 -0.43661,5.48725 -0.43661,5.48725 l 14.98909,-0.0118 c 0,0 0.88403,-4.38643 -0.37142,-6.09796 -1.22121,-1.66486 -4.31974,-3.67346 -6.92148,-3.61222 -2.8007,0.0659 -5.7734,2.3572 -7.25958,4.23473 z"
id="path1321"
sodipodi:nodetypes="sccsas" /><g
id="page1-5"
transform="translate(-12.34324,88.858881)" /></g></svg>
sodipodi:nodetypes="sccsas" /></g><g
inkscape:groupmode="layer"
id="layer1-2"
inkscape:label="upper left mini torso"
transform="matrix(0.08512347,0,0,0.08512347,162.43541,241.67255)"
style="fill:#fffff6;fill-opacity:1"><g
transform="matrix(0.19112784,0,0,0.19112784,249.49566,241.91504)"
id="g201-9"
inkscape:label="held-card"
clip-path="url(#clipPath1488-3)"
style="fill:#fffff6;fill-opacity:1"><path
d="m 142.63152,96.220652 c 0,-3.363944 -2.72704,-6.090983 -6.09039,-6.090983 H 75.63164 c -3.363944,0 -6.090983,2.727039 -6.090983,6.090983 v 90.145978 c 0,3.36335 2.727039,6.09039 6.090983,6.09039 h 60.90949 c 3.36335,0 6.09039,-2.72704 6.09039,-6.09039 z"
fill="#000000"
fill-rule="evenodd"
id="path199-1"
style="stroke-width:0.849545;fill:#fffff6;fill-opacity:1" /></g><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 266.88249,307.18587 c 0,0 -0.9689,-2.59374 -1.23677,-3.94584 -0.33267,-1.67917 -0.42529,-3.40416 -0.44841,-5.11581 -0.0196,-1.44827 0.0892,-2.89927 0.26235,-4.33728 0.0689,-0.5718 0.15037,-1.14619 0.30811,-1.7001 0.25327,-0.8894 1.01761,-2.58092 1.01761,-2.58092 l 0.35263,-1.54054 0.20856,-15.515 c 0,0 0.16906,-1.38595 0.6955,-1.69635 0.29483,-0.17384 0.74197,-0.0808 1.01986,0.11904 0.62338,0.44822 0.9816,2.08374 0.9816,2.08374 l -0.0217,15.23496 -2.12806,0.77545 4.21199,-1.22767 1.51056,0.40132 -0.48409,0.70449 c 0,0 1.17978,3.4113 1.22098,5.18711 0.025,1.07605 -0.59329,3.17405 -0.59329,3.17405 0,0 -0.11717,-1.43009 -0.19424,-2.14329 -0.0972,-0.89972 -0.0637,-1.83141 -0.33821,-2.69373 -0.30067,-0.9445 -0.54375,-2.12812 -1.40337,-2.62161 -0.64619,-0.37097 -2.23377,0.0827 -2.23377,0.0827 0,0 1.5757,-0.16696 2.18467,0.24033 0.73923,0.49441 1.28232,2.33959 1.28232,2.33959 l 0.47541,4.87874 c 0,0 -0.71424,1.12027 -1.2777,1.10739 -0.47443,-0.0108 -1.03211,-0.98061 -1.03211,-0.98061 l -0.42941,-3.67955 c 0,0 -0.55636,-1.06037 -1.07463,-1.17592 -0.64333,-0.14343 -1.82765,0.75477 -1.82765,0.75477 0,0 1.10857,-0.3751 1.59784,-0.15815 0.42871,0.19011 0.79282,0.80002 0.83726,1.13067 l 0.41995,3.1248 c 0.12193,0.90729 -0.63401,2.71459 -0.63401,2.71459 l 0.68299,3.32669 -0.34461,-3.32994 0.7545,-1.79165 c 0,0 0.65876,0.53855 1.0437,0.50463 0.6282,-0.0553 1.53303,-1.10867 1.53303,-1.10867 0,0 0.3592,-0.80191 0.46434,-1.22611 0.23045,-0.9298 0.35513,-2.85176 0.35513,-2.85176 l -1.19217,-4.89873 c 0,0 0.61095,-1.0524 1.1434,-1.19919 0.54152,-0.14929 1.62358,0.45143 1.62358,0.45143 0,0 1.34089,4.23342 1.49145,6.42777 0.14396,2.09827 -0.14047,4.22533 -0.57332,6.28351 -0.31744,1.50945 -0.95525,2.9337 -1.47133,4.38728 -0.56006,1.57745 -1.76315,4.70208 -1.76315,4.70208 0,0 -0.8937,2.5127 -1.50752,3.6917 -0.61992,1.19071 -2.18117,3.38547 -2.18117,3.38547 l -5.2751,-3.3802 c 0,0 1.44536,-2.37514 1.80052,-3.69996 0.22635,-0.8443 0.18592,-2.61573 0.18592,-2.61573 z"
id="path382-2"
sodipodi:nodetypes="caaaacccaaccccccacaaacaccaccacassccccacaccacaaacaccacc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 271.84421,278.94112 -1.69165,8.8e-4 -0.0355,9.30811 1.61245,-0.48801 z"
id="path1844-7"
sodipodi:nodetypes="ccccc" /><path
id="path500-0"
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 263.32198,313.60598 7.66112,4.66986 -2.12593,2.78372 -7.52132,-4.55228 z m -2.95387,2.71775 1.20921,-1.57997 -6.74211,-22.61862 4.0957,-2.9113 -4.32588,-2.34141 3.35302,-5.30892 c 0,0 -7.02195,-0.10322 -10.47435,0.43754 -2.80724,0.4397 -5.94771,0.55652 -8.21786,2.26543 -4.15381,3.12689 -6.49991,8.37064 -8.1425,13.30354 -2.34747,7.04974 -2.08431,22.19326 -2.08431,22.19326 l -1.80113,20.47961 c 0,0 2.72768,8.4422 6.26452,10.42218 2.50232,1.40084 5.89071,0.85517 8.6029,-0.0765 3.54242,-1.21687 8.92582,-6.82606 8.92582,-6.82606 l 19.23178,-21.62906 -0.81072,-0.36746 2.26919,-3.7197 -8.5512,-5.24161 -2.78341,3.80976 -1.18804,-0.72845 -17.88662,16.75842 -3.87062,11.38348 3.39351,-12.16517 2.3655,-27.96046 4.17578,-8.7438 -3.56685,9.17325 -2.51774,27.44009 17.82688,-16.15573 z"
sodipodi:nodetypes="cccccccccccaaaccaacccccccccccccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 277.18224,270.72815 c 0,0 2.15575,-3.44056 2.90106,-5.31692 1.7005,-4.28109 2.87012,-8.80452 3.5089,-13.36647 0.47905,-3.42115 0.66976,-6.93565 0.22299,-10.36116 -0.2529,-1.93906 -1.62631,-5.63651 -1.62631,-5.63651 l 1.49952,-3.741 -1.68942,0.63638 -0.71467,-2.08086 -3.05145,3.18089 0.18757,-0.9821 -0.63066,1.13844 -1.1721,0.45445 0.20141,-1.04354 -0.50784,1.05693 -0.93265,0.16893 0.0245,-1.10676 -0.42266,1.1314 0.10053,-0.79623 -0.62855,0.85033 -1.31533,0.22714 0.12982,-0.82319 -0.43838,0.87034 -1.09605,0.11034 0.0671,-1.13371 -0.49445,1.18318 -2.88778,0.20679 0.16338,-1.11087 -0.60177,1.12443 -0.74712,-0.14159 0.41374,-1.27088 -0.70909,1.20337 0.33338,-1.05051 -0.79873,0.89963 -1.38674,-0.34178 0.38035,-0.89962 -0.77409,0.80069 0.38034,-1.10889 -0.76497,0.99639 -1.54567,-0.60284 0.61963,-1.02569 -0.93517,0.87944 -0.71355,-0.24285 0.63748,-1.14497 -0.96408,1.06855 -0.58147,-0.0725 c 0,0 -4.79511,-1.16868 -6.61785,-2.70361 -1.09827,-0.92485 -1.79373,-2.30255 -2.28389,-3.65211 -1.78048,-4.90215 -2.15108,-15.49786 -2.15108,-15.49786 0,0 -1.92687,11.74436 -0.71465,17.43225 0.45752,2.14674 1.39586,4.32673 2.92886,5.89763 1.62539,1.66558 6.1754,3.25716 6.1754,3.25716 0,0 -1.67158,2.85609 -2.01216,4.44708 -0.70548,3.29566 -0.42674,6.77194 0.0318,10.11093 0.64019,4.66217 1.95545,9.26204 3.76272,13.60709 0.6151,1.47882 2.38146,4.17325 2.38146,4.17325 l -0.0841,-10.3003 c 0,0 0.21742,-0.85168 0.49354,-1.17419 0.21107,-0.24653 0.82872,-0.51104 0.82872,-0.51104 l 12.5356,0.034 c 0,0 0.60267,0.30405 0.8047,0.5612 0.17491,0.22265 0.30714,0.79194 0.30714,0.79194 z"
id="path1113-9"
sodipodi:nodetypes="caaacccccccccccccccccccccccccccccccccccccccccaacaacaaaccaccacc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 279.90319,232.03788 c 0,0 -1.79777,-1.98425 -2.98858,-2.50583 -2.00515,-0.87828 -4.32602,-0.91991 -6.51354,-0.83775 -2.51625,0.0945 -5.04186,0.63725 -7.39898,1.52293 -1.57951,0.5935 -4.40327,2.49698 -4.40327,2.49698 l 0.2877,0.14685 c 0,0 2.65936,-1.85094 4.15743,-2.4252 2.31661,-0.88804 4.80972,-1.40522 7.28857,-1.50813 2.17573,-0.0903 4.48423,-0.0706 6.48501,0.78892 1.17342,0.50412 2.95376,2.44025 2.95376,2.44025 z"
id="path1115-3"
sodipodi:nodetypes="caaaccaaacc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 264.84097,233.54653 c 0,0 0.83939,-2.35742 1.73179,-3.16247 0.29914,-0.26986 0.71985,-0.38555 1.11407,-0.46862 0.26565,-0.056 0.81433,-0.014 0.81433,-0.014 0,0 -1.29222,0.26351 -1.78469,0.66396 -0.91088,0.74067 -1.1714,2.01271 -1.8755,2.98113 z"
id="path1117-6"
sodipodi:nodetypes="caacac" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 268.60241,234.76222 c 0,0 0.5963,-2.77597 1.40041,-3.89845 0.35167,-0.4909 0.88943,-0.83503 1.41725,-1.12838 0.28691,-0.15946 0.92766,-0.33038 0.92766,-0.33038 0,0 -1.60039,0.83045 -2.14805,1.51418 -0.86726,1.08274 -0.93189,2.49575 -1.59727,3.84303 z"
id="path1119-0"
sodipodi:nodetypes="caacac" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 271.952,234.4059 c 0,0 0.25169,-2.46058 0.98715,-3.37205 0.40348,-0.50004 1.10145,-0.67115 1.69371,-0.92028 0.25184,-0.10594 0.78338,-0.24114 0.78338,-0.24114 0,0 -1.69027,0.61173 -2.24914,1.26576 -0.75495,0.88349 -1.2151,3.26771 -1.2151,3.26771 z"
id="path1121-6"
sodipodi:nodetypes="caacac" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 256.86287,237.91712 -1.03485,5.4954 c 0,0 0.0713,-1.92081 0.21605,-2.8688 0.13854,-0.90761 0.62197,-2.68322 0.62197,-2.68322 z"
id="path1143-2"
sodipodi:nodetypes="ccacc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 282.42511,235.96727 1.48005,4.9439 -1.21948,-5.32941 z"
id="path1145-6"
sodipodi:nodetypes="cccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 262.3003,280.55853 -4.07662,1.0755 -3.33348,5.09216 4.46702,2.42474 -4.17614,3.09278 6.69598,21.74112 1.29188,-1.71326 1.39356,0.78945 -3.73487,-28.91095 z"
id="path1172-1"
sodipodi:nodetypes="cccccccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 278.1688,294.14359 -0.40969,-1.32462 1.08227,-8.74465 -1.47267,-3.59156 4.07662,1.07552 3.33347,5.09214 -4.46701,2.42476 4.17614,3.09278 -14.03722,49.31398 c 0.12878,-6.21529 7.11507,-32.77442 7.2245,-40.41014"
id="path1172-7-8"
sodipodi:nodetypes="cccccccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 262.31862,280.46061 -0.33321,0.074 0.74606,-3.05224 0.0626,0.59043 z"
id="path1174-7"
sodipodi:nodetypes="ccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 267.00327,287.9204 -0.47014,-8.47144 -1.08123,-0.56607 -0.27912,0.0473 1.0333,0.6147 -0.24502,4.50211 -3.49067,-3.63424 -0.0346,0.25643 3.66806,3.74031 0.31821,-4.61089 0.4563,8.50889 z"
id="path1180-9"
sodipodi:nodetypes="cccccccccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 277.35095,280.41501 0.33319,0.074 -0.74604,-3.05226 -0.0626,0.59043 z"
id="path1174-3-2"
sodipodi:nodetypes="ccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 274.1806,278.83693 0.34656,0.0186 -1.06369,0.64366 0.24502,4.50214 3.49069,-3.63426 0.0346,0.25643 -3.66805,3.74031 -0.31822,-4.61088 -0.52897,8.02414 -0.1441,-0.0731 0.50732,-8.25729 z"
id="path1180-6-0"
sodipodi:nodetypes="cccccccccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 268.28954,324.59858 2.27709,13.30716 -3.91455,-11.44935 z"
id="path1257-2" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 266.3978,326.96959 3.98632,11.43114 -0.3132,2.57314 c 0,0 -1.92343,6.26783 -2.3753,9.50082 -0.4991,3.57096 -0.35417,10.81121 -0.35417,10.81121 l 0.89487,15.95703 -25.45506,-3.56347 -0.26699,-22.46242 c 0,0 3.82449,-2.35163 5.49944,-3.82966 6.86692,-6.05961 18.38409,-20.41779 18.38409,-20.41779 z"
id="path1259-3"
sodipodi:nodetypes="cccaccccac" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.369204;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 300.66383,326.59125 -1.56495,-9.3412 -1.48929,-9.55222 -1.58117,-6.59808 0.65215,6.53631 -0.52638,66.55341 -27.44729,2.74806 c 0,0 -1.52561,-17.08013 -0.64564,-25.55593 0.31552,-3.03904 2.10894,-8.92021 2.10894,-8.92021 l 0.7778,-1.11972 13.92839,-49.26185 -4.11223,-2.98694 4.40996,-2.4079 -3.2753,-4.84565 c 0,0 7.92736,-0.0557 11.8197,0.58498 3.2371,0.53285 6.91543,0.62815 9.46725,2.68994 3.49507,2.82391 4.98662,7.6144 6.32583,11.90352 3.24902,10.40574 3.81154,32.48064 3.81154,32.48064 0,0 -1.94807,4.94389 -3.65919,6.90982 -3.37162,3.87372 -12.49059,9.01925 -12.49059,9.01925 l 0.14144,-14.54982 3.09834,-3.765 5.73721,4.20752 z"
id="path1261-7"
sodipodi:nodetypes="cccccccaccccccaaacaccccc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.717439;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 247.23009,426.85077 c 0.26659,17.47875 -0.28044,52.44159 -0.28044,52.44159 l 18.19075,-0.38848 c 0,0 0.0359,-30.16421 1.18781,-45.18798 0.36451,-4.75395 1.80842,-14.18892 1.80842,-14.18892 l 1.08867,-21.57772 2.57655,21.67289 c 0,0 1.55386,9.60539 1.83578,14.45386 0.84872,14.59622 -0.44611,43.86036 -0.44611,43.86036 l 18.33534,0.81627 c 0,0 0.60361,-35.80477 0.771,-53.70876 0.068,-7.27401 -0.14925,-14.55255 0.0948,-21.8228 0.31396,-9.35401 1.76102,-28.02255 1.76102,-28.02255 l -25.67419,2.89974 -24.03175,-3.7368 c 0,0 1.37972,17.5626 1.84515,26.35769 0.46061,8.70396 0.80429,17.41649 0.93722,26.13161 z"
id="path1317-5"
sodipodi:nodetypes="accacccaccaacccaa" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:1.03611;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 262.63276,479.38499 -12.21911,0.17796 0.26375,10.35166 c 0,0 3.96963,-2.0023 5.77818,-2.07703 1.87086,-0.0773 6.27012,2.21661 6.27012,2.21661 z"
id="path1572-9"
sodipodi:nodetypes="cccscc" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:1.03611;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 249.90917,491.59849 c -1.16544,1.52585 -1.02588,6.60561 -1.02588,6.60561 l 15.42526,0.0659 c 0,0 0.45034,-4.87444 -0.61975,-6.457 -1.37979,-2.04057 -4.51931,-3.66116 -7.21277,-3.64303 -2.46928,0.0166 -5.12577,1.54179 -6.56686,3.42852 z"
id="path1319-2"
sodipodi:nodetypes="sccsas" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.983351;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 281.95627,487.67407 c 1.95086,0.0154 5.451,2.13105 5.451,2.13105 l 0.63358,-10.82364 -11.75065,-0.36774 0.15057,11.11716 c 0,0 3.55338,-2.07226 5.5155,-2.05683 z"
id="path1568-2"
sodipodi:nodetypes="acccca" /><path
style="vector-effect:non-scaling-stroke;fill:#fffff6;fill-opacity:1;stroke:none;stroke-width:0.983351;stroke-dasharray:none;stroke-opacity:1;-inkscape-stroke:hairline"
d="m 274.5652,492.41872 c -1.17122,1.47963 -0.43661,5.48725 -0.43661,5.48725 l 14.98909,-0.0118 c 0,0 0.88403,-4.38643 -0.37142,-6.09796 -1.22121,-1.66486 -4.31974,-3.67346 -6.92148,-3.61222 -2.8007,0.0659 -5.7734,2.3572 -7.25958,4.23473 z"
id="path1321-8"
sodipodi:nodetypes="sccsas" /></g></svg>

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View file

@ -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));
}

View file

@ -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);

217
faces/count_of_cards.asy Normal file
View file

@ -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);
}

262
faces/prince_of_wheels.asy Normal file
View file

@ -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;