add room for noble faces, set up noble letters, make chairs

main
xenofem 2022-07-27 06:00:47 -04:00
parent 4a0f5de37f
commit cec6d8b93a
7 changed files with 115 additions and 79 deletions

View File

@ -1,12 +1,13 @@
suits := puppets bread wheels blades chairs cards
values := 1 2 3 4 5 6 traveler knight wizard noble
nobles := count-of-cards queen-of-puppets earl-of-bread scion-of-blades prince-of-wheels regent-of-chairs
cards := $(foreach suit,$(suits),$(foreach value,$(values),$(value)-$(suit)))
svgdeck: $(foreach card,$(cards),build/$(card).svg)
pngdeck: $(foreach card,$(cards),build/$(card).png)
build/%.svg: deck.asy cards.asy numerals.asy $(foreach suit,$(suits),$(suit).asy)
build/%.svg: deck.asy cards.asy numerals.asy suits.asy nobles.asy $(foreach suit,$(suits),$(suit).asy) $(foreach noble,$(nobles),$(noble).asy)
mkdir -p build
sh -c "buf_size=5000000 asy -globalwrite deck.asy"

View File

@ -1,10 +1,8 @@
import "scaling.asy" as scaling;
import "puppets.asy" as puppets_suit;
import "bread.asy" as bread_suit;
import "chairs.asy" as chairs_suit;
import "blades.asy" as blades_suit;
import "wheels.asy" as wheels_suit;
import "suits.asy" as suits;
import "numerals.asy" as numerals_paths;
import "nobles.asy" as nobles;
import "faces.asy" as general_faces;
real corner_radius = width/12;
@ -39,17 +37,6 @@ transform placements[][] = {
// The four face cards
{}, {}, {}, {},
/* Forgot the deck doesn't have numbers past 6 lol
// 7
{ (0,-height*scpy/2), (width*scpx,0), (-width*scpx,0), (width*scpx,height*scpy), (width*scpx,-height*scpy), (-width*scpx,height*scpy), (-width*scpx,-height*scpy) },
// 8
{ (0, height*scpy/2), (0,-height*scpy/2), (width*scpx,0), (-width*scpx,0), (width*scpx,height*scpy), (width*scpx,-height*scpy), (-width*scpx,height*scpy), (-width*scpx,-height*scpy) },
// 9
{ (0,0), (width*scpx,height*scpy), (width*scpx,-height*scpy), (-width*scpx,height*scpy), (-width*scpx,-height*scpy), (width*scpx,height*scpy/3), (width*scpx,-height*scpy/3), (-width*scpx,height*scpy/3), (-width*scpx, -height*scpy/3) },
*/
};
real scale_factor = 0.15;
@ -60,21 +47,6 @@ pair numeral_pos = (-width*0.38, height*0.4);
real indicator_scale_factor = 0.1;
pair indicator_pos = (-width*0.38, height*0.25);
int PUPPETS = 0;
int BREAD = 1;
int CHAIRS = 2;
int BLADES = 3;
int WHEELS = 4;
int CARDS = 5;
path icons[][] = {
{},
bread,
{},
blade,
wheel,
};
// note: if you bump this depth value to 4, you'll need to set
// buf_size=5000000 so latex doesn't choke
path[] recursive_card(int value, int suit, int depth=4, bool outermost=true) {
@ -90,8 +62,17 @@ 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 = shift(numeral_pos)*scale(numeral_scale_factor)*numerals[value];
result = result^^indicator^^(rotate(180)*indicator)^^numeral^^(rotate(180)*numeral);
path[] numeral;
path[] face;
if (value == NOBLE) {
numeral = noble_letters[suit];
face = noble_faces[suit];
} else {
numeral = numerals[value];
face = faces[value];
}
numeral = shift(numeral_pos)*scale(numeral_scale_factor)*numeral;
result = result^^face^^indicator^^(rotate(180)*indicator)^^numeral^^(rotate(180)*numeral);
real current_scale_factor = scale_factor;
if (value == 1) {

View File

@ -1,28 +1,16 @@
import "scaling.asy" as scaling;
//real x = width/3;
//real y = 2*height/6;
real leg_height = height*0.45;
real seat_thickness = height*0.2;
real back_height = height*0.6;
real back_top_offset = width*0.1;
real front_leg_top = -width*0.35;
real front_leg_bottom = -width*0.45;
real back_leg_top = width*0.4;
real back_leg_bottom = width*0.45;
real leg_thickness = width*0.2;
real back_thickness = width*0.2;
real cushion_thickness = height*0.06;
pair cushion_edge_smoothing = width*0.2*dir(55);
//path bread = (x,0){right}..{up}(width, height-y){up}..{left}(width-x, height){left}..{down}(0,y){down}..{right}cycle;
real outer_radius = height/2;
real inner_radius = outer_radius*4/5;
real center_radius = outer_radius/5;
real axle_radius = center_radius/2;
int gaps = 6;
real spoke_width = center_radius*0.7;
path spoke_part = (spoke_width/2, 0)--(spoke_width/2, outer_radius);
path gap = buildcycle(circle((0,0), center_radius), spoke_part, reverse(circle((0,0), inner_radius)), reflect((0,0), dir(90-180/gaps))*spoke_part);
//draw((-width/2,-height/2)--(width/2,-height/2)--(width/2,height/2)--(-width/2,height/2)--cycle);
path wheel[] = { circle((0,0), outer_radius), circle((0,0), axle_radius) };
for (int i = 0; i < gaps; ++i) {
wheel = wheel^^(rotate(360*i/gaps)*gap);
}
//fill(wheel, evenodd+red);
path[] chair = { (width/2, 0)--(width/2+back_top_offset,back_height)--(width/2+back_top_offset-back_thickness, back_height)--(width/2-back_thickness, 0)..(0,cushion_thickness)..(-width/2 + cushion_edge_smoothing.x, 0)..(-width/2, -cushion_edge_smoothing.y)---(-width/2,-seat_thickness)--(front_leg_top-leg_thickness/2, -seat_thickness)--(front_leg_bottom-leg_thickness/2,-seat_thickness-leg_height)--(front_leg_bottom+leg_thickness/2,-seat_thickness-leg_height)--(front_leg_top+leg_thickness/2, -seat_thickness)--(back_leg_top-leg_thickness/2, -seat_thickness)--(back_leg_bottom-leg_thickness/2,-seat_thickness-leg_height)--(back_leg_bottom+leg_thickness/2,-seat_thickness-leg_height)--(back_leg_top+leg_thickness/2, -seat_thickness)--(width/2,-seat_thickness)--cycle };

7
faces.asy Normal file
View File

@ -0,0 +1,7 @@
path faces[][] = {
{}, // 0
{}, {}, {}, {}, {}, {}, // 1-6
{}, // traveler
{}, // knight
{}, // wizard
};

34
nobles.asy Normal file
View File

@ -0,0 +1,34 @@
import "suits.asy" as suits;
import "numerals.asy" as numerals;
int COUNT = CARDS;
int QUEEN = PUPPETS;
int EARL = BREAD;
int SCION = BLADES;
int PRINCE = WHEELS;
int REGENT = CHAIRS;
path[][] noble_faces = { {}, {}, {}, {}, {}, {} };
path[][] noble_letters = { {}, {}, {}, {}, {}, {} };
path[] c = { (45,335)..controls (45,94) and (212,-16)..(396,-16)..controls (523,-16) and (648,54)..(650,72)..controls (662,162) and (666,195)..(666,205)..controls (666,212) and (664,217)..(654,218)..controls (638,220) and (634,218)..(632,204)---(619,91)..controls (618,80) and (537,23)..(424,23)..controls (270,23) and (147,164)..(147,333)..controls (147,514) and (250,650)..(395,650)..controls (528,650) and (626,545)..(626,531)..controls (626,522) and (622,445)..(622,441)..controls (622,432) and (623,429)..(641,429)..controls (654,429) and (657,433)..(657,445)..controls (657,496) and (661,620)..(661,638)..controls (661,650) and (656,651)..(641,651)..controls (626,651) and (626,649)..(626,638)---(626,611)..controls (626,594) and (618,601)..(609,608)..controls (589,622) and (520,680)..(402,680)..controls (200,680) and (45,544)..cycle };
noble_letters[COUNT] = shrink_glyph(45, 666, true)*c;
path[] q = (45,340)..controls (45,118) and (204,25)..(382,3)..controls (389,2) and (396,2)..(396,1)..controls (396,-3) and (289,-51)..(255,-60)..controls (234,-65) and (215,-66)..(198,-66)..controls (191,-66) and (183,-65)..(176,-65)..controls (159,-65) and (151,-68)..(151,-80)..controls (151,-91) and (174,-122)..(187,-122)..controls (195,-122) and (229,-104)..(254,-104)..controls (308,-104) and (466,-187)..(603,-187)..controls (677,-187) and (759,-124)..(759,-111)..controls (759,-103) and (748,-94)..(745,-94)..controls (739,-94) and (707,-124)..(639,-124)..controls (595,-124) and (527,-98)..(459,-83)..controls (401,-70) and (305,-71)..(305,-67)..controls (305,-65) and (462,5)..(494,14)..controls (637,55) and (738,179)..(738,340)..controls (738,534) and (590,675)..(392,675)..controls (208,675) and (45,556)..cycle^^(132,356)..controls (132,509) and (239,647)..(382,647)..controls (545,647) and (640,485)..(640,332)..controls (640,108) and (465,18)..(434,18)..controls (411,18) and (274,54)..(217,119)..controls (166,177) and (132,264)..cycle;
noble_letters[QUEEN] = shrink_glyph(45, 759, true)*q;
path[] e = { (40,15)..controls (40,-2) and (40,-3)..(53,-3)..controls (76,-3) and (145,0)..(175,0)..controls (205,0) and (522,-3)..(545,-3)..controls (555,-3) and (567,-1)..(567,8)..controls (567,38) and (570,96)..(570,146)..controls (570,153) and (562,155)..(553,155)..controls (545,155) and (539,153)..(539,147)..controls (538,108) and (538,85)..(536,60)..controls (534,37) and (533,37)..(517,37)..controls (513,37) and (314,34)..(216,34)..controls (210,34) and (207,167)..(204,310)..controls (204,325) and (204,325)..(220,325)---(383,325)..controls (437,325) and (438,315)..(438,305)---(438,259)..controls (438,253) and (448,250)..(456,250)..controls (463,250) and (469,253)..(469,258)..controls (469,271) and (467,305)..(467,341)..controls (467,377) and (469,410)..(469,419)..controls (469,424) and (462,427)..(455,427)..controls (447,427) and (438,424)..(438,418)---(438,368)..controls (438,352) and (401,352)..(383,352)---(216,352)..controls (204,352) and (204,355)..(204,368)..controls (203,418) and (202,467)..(202,510)..controls (202,588) and (203,638)..(209,638)..controls (320,638) and (481,635)..(481,631)..controls (481,625) and (478,558)..(478,553)..controls (478,543) and (481,539)..(493,539)..controls (507,539) and (509,541)..(509,549)..controls (509,627) and (513,660)..(513,679)..controls (513,689) and (510,690)..(496,690)..controls (488,690) and (484,688)..(483,678)..controls (481,666) and (483,665)..(416,665)..controls (373,665) and (220,662)..(167,662)..controls (132,662) and (67,665)..(60,665)..controls (52,665) and (48,663)..(48,651)..controls (48,636) and (55,636)..(67,636)---(110,636)..controls (117,636) and (121,564)..(121,492)..controls (121,486) and (125,309)..(125,198)---(125,102)..controls (125,47) and (124,27)..(118,27)---(57,27)..controls (41,27) and (40,27)..cycle };
noble_letters[EARL] = shrink_glyph(40, 570, true)*e;
path[] r = (40,649)..controls (40,634) and (48,632)..(60,632)--(115,634)..controls (126,634) and (127,436)..(127,289)---(127,156)..controls (127,85) and (126,27)..(122,27)---(77,27)..controls (61,27) and (59,27)..(59,15)..controls (59,-2) and (60,-3)..(73,-3)..controls (82,-3) and (141,0)..(171,0)..controls (201,0) and (256,-3)..(279,-3)..controls (289,-3) and (290,-1)..(290,14)..controls (290,26) and (290,27)..(279,27)---(218,27)..controls (212,27) and (207,240)..(207,302)..controls (207,308) and (208,313)..(218,313)..controls (246,313) and (289,312)..(310,312)..controls (473,309) and (483,186)..(483,66)---(483,8)..controls (483,0) and (484,0)..(491,0)..controls (491,0) and (590,-3)..(624,-3)..controls (636,-3) and (641,0)..(641,5)..controls (641,26) and (638,27)..(629,27)---(583,27)..controls (572,27) and (571,35)..(569,92)..controls (563,256) and (465,303)..(402,322)..controls (388,326) and (382,326)..(382,327)..controls (382,328) and (389,329)..(402,335)..controls (444,354) and (536,406)..(536,498)..controls (536,638) and (418,668)..(318,668)..controls (295,668) and (203,662)..(173,662)..controls (143,662) and (76,664)..(60,664)..controls (47,664) and (40,664)..cycle^^(207,345)---(207,586)..controls (207,616) and (210,640)..(214,640)..controls (231,641) and (249,642)..(266,642)..controls (360,642) and (451,583)..(451,484)..controls (451,400) and (411,356)..(363,334)..controls (359,332) and (355,333)..(351,333)..controls (317,334) and (266,334)..(223,335)..controls (209,335) and (207,337)..cycle;
noble_letters[REGENT] = shrink_glyph(40, 641, true)*r;
path[] p = (40,649)..controls (40,634) and (48,632)..(60,632)---(123,634)..controls (127,634) and (128,589)..(128,526)---(128,474)..controls (128,343) and (127,27)..(119,27)---(68,27)..controls (52,27) and (50,27)..(50,15)..controls (50,-2) and (51,-3)..(64,-3)..controls (73,-3) and (141,0)..(171,0)..controls (201,0) and (263,-3)..(286,-3)..controls (296,-3) and (297,-1)..(297,14)..controls (297,26) and (297,27)..(286,27)---(213,27)..controls (209,27) and (208,136)..(208,216)---(208,282)..controls (208,288) and (208,293)..(218,293)..controls (246,293) and (269,290)..(305,290)..controls (446,290) and (544,343)..(544,471)..controls (544,606) and (440,667)..(304,667)..controls (281,667) and (203,662)..(173,662)..controls (143,662) and (76,664)..(60,664)..controls (47,664) and (40,664)..cycle^^(209,325)---(209,586)..controls (209,616) and (210,640)..(214,640)..controls (225,641) and (236,641)..(247,641)..controls (366,641) and (458,583)..(458,486)..controls (458,357) and (361,312)..(247,312)..controls (231,312) and (209,313)..cycle;
noble_letters[PRINCE] = shrink_glyph(40, 544, true)*p;
//path[] d = (35,10)..controls (35,-2) and (35,-4)..(46,-4)..controls (57,-4) and (145,0)..(173,0)..controls (238,0) and (303,-4)..(368,-4)..controls (547,-2) and (713,116)..(713,335)..controls (713,549) and (548,678)..(332,678)..controls (292,678) and (202,666)..(128,666)..controls (94,666) and (63,667)..(59,667)..controls (46,667) and (46,663)..(46,651)..controls (46,639) and (50,639)..(59,639)---(129,641)..controls (130,641) and (131,610)..(131,563)..controls (131,397) and (124,25)..(118,25)---(52,25)..controls (39,25) and (35,25)..cycle^^(213,86)..controls (213,225) and (213,362)..(214,500)..controls (214,545) and (217,645)..(221,646)..controls (244,652) and (285,652)..(311,652)..controls (496,652) and (612,490)..(612,348)..controls (612,261) and (608,22)..(272,22)..controls (252,22) and (221,22)..(215,26)..controls (213,27) and (213,54)..cycle;
//noble_letters[DUCHESS] = shrink_glyph(35, 713, true)*d;
path[] s = { (55,488)..controls (55,256) and (411,318)..(411,139)..controls (411,70) and (349,18)..(278,18)..controls (220,18) and (102,51)..(100,81)---(94,173)..controls (93,185) and (90,189)..(78,189)---(73,189)..controls (63,189) and (61,183)..(61,175)..controls (61,161) and (69,67)..(71,31)..controls (72,21) and (158,-15)..(269,-15)..controls (380,-15) and (493,54)..(493,178)..controls (493,411) and (138,334)..(138,520)..controls (138,594) and (195,649)..(271,649)..controls (345,649) and (425,576)..(425,551)..controls (425,542) and (422,491)..(422,487)..controls (422,478) and (423,475)..(441,475)..controls (454,475) and (457,479)..(457,491)..controls (457,542) and (462,637)..(462,648)..controls (462,660) and (458,662)..(443,662)..controls (428,662) and (428,659)..(428,648)---(427,637)..controls (426,629) and (424,627)..(420,627)..controls (415,627) and (409,631)..(404,635)..controls (348,673) and (305,677)..(269,677)..controls (161,677) and (55,600)..cycle };
noble_letters[SCION] = shrink_glyph(55, 493, true)*s;

View File

@ -10,35 +10,41 @@ path numerals[][] = { {} };
real glyph_height = 690;
real face_letter_scale_adjustment = 0.8;
transform shrink_glyph(real x_min, real x_max, bool letter=false) {
real scale_factor = height/glyph_height;
if (letter) { scale_factor = scale_factor * face_letter_scale_adjustment; }
return scale(scale_factor)*shift(-(x_min + x_max)/2, -glyph_height/2);
}
// Glyphs from https://github.com/theleagueof/fanwood
path[] one = { scale(height/glyph_height)*shift(-(363+150)/2, -glyph_height/2)*((150,589)..controls (150,586) and (149,583)..(156,583)..controls (160,583) and (219,588)..(224,588)..controls (234,588) and (234,585)..(235,568)..controls (237,511) and (239,345)..(239,228)---(239,110)..controls (239,85) and (239,27)..(235,27)---(171,27)..controls (155,27) and (153,27)..(153,15)..controls (153,-2) and (154,-3)..(167,-3)..controls (190,-3) and (246,0)..(276,0)..controls (306,0) and (347,-3)..(363,-3)..controls (373,-3) and (374,-1)..(374,14)..controls (374,26) and (374,27)..(363,27)---(317,27)..controls (309,27) and (309,43)..(309,66)..controls (309,250) and (310,406)..(310,604)..controls (310,616) and (310,619)..(303,619)..controls (297,619) and (200,613)..(160,610)..controls (151,609) and (150,610)..(150,602)---cycle) };
numerals.push(one);
path[] one = { (150,589)..controls (150,586) and (149,583)..(156,583)..controls (160,583) and (219,588)..(224,588)..controls (234,588) and (234,585)..(235,568)..controls (237,511) and (239,345)..(239,228)---(239,110)..controls (239,85) and (239,27)..(235,27)---(171,27)..controls (155,27) and (153,27)..(153,15)..controls (153,-2) and (154,-3)..(167,-3)..controls (190,-3) and (246,0)..(276,0)..controls (306,0) and (347,-3)..(363,-3)..controls (373,-3) and (374,-1)..(374,14)..controls (374,26) and (374,27)..(363,27)---(317,27)..controls (309,27) and (309,43)..(309,66)..controls (309,250) and (310,406)..(310,604)..controls (310,616) and (310,619)..(303,619)..controls (297,619) and (200,613)..(160,610)..controls (151,609) and (150,610)..(150,602)---cycle };
numerals.push(shrink_glyph(150, 363)*one);
path[] two = { scale(height/glyph_height)*shift(-(40+458)/2, -glyph_height/2)*((40,493)..controls (40,486) and (55,478)..(61,478)..controls (66,478) and (121,574)..(219,574)..controls (300,574) and (338,496)..(338,428)..controls (338,280) and (181,166)..(127,117)..controls (122,113) and (66,17)..(66,11)..controls (66,5) and (69,0)..(80,0)---(426,0)..controls (433,0) and (436,1)..(437,6)..controls (445,45) and (458,132)..(458,139)..controls (458,142) and (442,142)..(437,142)..controls (433,142) and (423,58)..(419,58)---(127,58)..controls (122,58) and (120,58)..(120,59)..controls (120,61) and (136,96)..(153,110)..controls (211,156) and (413,300)..(413,447)..controls (413,518) and (360,622)..(238,622)..controls (126,622) and (40,508)..cycle) };
numerals.push(two);
path[] two = { (40,493)..controls (40,486) and (55,478)..(61,478)..controls (66,478) and (121,574)..(219,574)..controls (300,574) and (338,496)..(338,428)..controls (338,280) and (181,166)..(127,117)..controls (122,113) and (66,17)..(66,11)..controls (66,5) and (69,0)..(80,0)---(426,0)..controls (433,0) and (436,1)..(437,6)..controls (445,45) and (458,132)..(458,139)..controls (458,142) and (442,142)..(437,142)..controls (433,142) and (423,58)..(419,58)---(127,58)..controls (122,58) and (120,58)..(120,59)..controls (120,61) and (136,96)..(153,110)..controls (211,156) and (413,300)..(413,447)..controls (413,518) and (360,622)..(238,622)..controls (126,622) and (40,508)..cycle };
numerals.push(shrink_glyph(40, 458)*two);
path[] three = { scale(height/glyph_height)*shift(-(90+394)/2, -glyph_height/2)*((90,17)..controls (90,-12) and (175,-18)..(226,-18)..controls (330,-18) and (437,59)..(437,175)..controls (437,288) and (366,320)..(280,326)..controls (251,328) and (236,326)..(236,329)..controls (236,331) and (259,339)..(286,351)..controls (341,376) and (394,431)..(394,502)..controls (394,577) and (330,633)..(244,633)..controls (161,633) and (92,569)..(92,556)..controls (92,548) and (103,538)..(111,538)..controls (117,538) and (157,599)..(228,599)..controls (282,599) and (325,546)..(325,492)..controls (325,392) and (269,350)..(160,324)..controls (149,321) and (139,322)..(139,310)..controls (139,307) and (140,301)..(141,298)..controls (144,289) and (142,281)..(154,281)..controls (163,281) and (214,286)..(240,286)..controls (331,286) and (373,242)..(373,158)..controls (373,76) and (324,8)..(237,8)..controls (217,8) and (188,21)..(167,34)..controls (151,43) and (148,47)..(130,47)..controls (109,47) and (90,27)..cycle) };
numerals.push(three);
path[] three = { (90,17)..controls (90,-12) and (175,-18)..(226,-18)..controls (330,-18) and (437,59)..(437,175)..controls (437,288) and (366,320)..(280,326)..controls (251,328) and (236,326)..(236,329)..controls (236,331) and (259,339)..(286,351)..controls (341,376) and (394,431)..(394,502)..controls (394,577) and (330,633)..(244,633)..controls (161,633) and (92,569)..(92,556)..controls (92,548) and (103,538)..(111,538)..controls (117,538) and (157,599)..(228,599)..controls (282,599) and (325,546)..(325,492)..controls (325,392) and (269,350)..(160,324)..controls (149,321) and (139,322)..(139,310)..controls (139,307) and (140,301)..(141,298)..controls (144,289) and (142,281)..(154,281)..controls (163,281) and (214,286)..(240,286)..controls (331,286) and (373,242)..(373,158)..controls (373,76) and (324,8)..(237,8)..controls (217,8) and (188,21)..(167,34)..controls (151,43) and (148,47)..(130,47)..controls (109,47) and (90,27)..cycle };
numerals.push(shrink_glyph(90, 394)*three);
path[] four = scale(height/glyph_height)*shift(-(40+444)/2, -glyph_height/2)*((40,209)..controls (40,202) and (50,201)..(58,201)---(277,201)..controls (292,201) and (293,201)..(293,186)---(290,2)..controls (290,-6) and (290,-11)..(295,-11)..controls (310,-11) and (350,-9)..(356,-7)..controls (359,-6) and (360,-5)..(360,2)..controls (360,7) and (359,126)..(356,187)..controls (355,201) and (356,201)..(370,201)---(432,201)..controls (444,201) and (444,201)..(444,211)---(444,245)..controls (444,255) and (443,255)..(437,255)---(369,255)..controls (355,255) and (354,255)..(354,273)---(354,599)..controls (354,618) and (351,628)..(343,628)..controls (335,628) and (320,610)..(299,590)..controls (288,580) and (274,577)..(260,559)..controls (193,472) and (98,337)..(56,264)..controls (41,238) and (40,220)..cycle^^(87,259)..controls (87,264) and (95,274)..(100,281)..controls (145,346) and (282,544)..(290,544)..controls (293,544) and (293,537)..(293,518)---(293,275)..controls (293,256) and (292,255)..(274,255)---(107,255)..controls (92,255) and (87,255)..cycle);
numerals.push(four);
path[] four = (40,209)..controls (40,202) and (50,201)..(58,201)---(277,201)..controls (292,201) and (293,201)..(293,186)---(290,2)..controls (290,-6) and (290,-11)..(295,-11)..controls (310,-11) and (350,-9)..(356,-7)..controls (359,-6) and (360,-5)..(360,2)..controls (360,7) and (359,126)..(356,187)..controls (355,201) and (356,201)..(370,201)---(432,201)..controls (444,201) and (444,201)..(444,211)---(444,245)..controls (444,255) and (443,255)..(437,255)---(369,255)..controls (355,255) and (354,255)..(354,273)---(354,599)..controls (354,618) and (351,628)..(343,628)..controls (335,628) and (320,610)..(299,590)..controls (288,580) and (274,577)..(260,559)..controls (193,472) and (98,337)..(56,264)..controls (41,238) and (40,220)..cycle^^(87,259)..controls (87,264) and (95,274)..(100,281)..controls (145,346) and (282,544)..(290,544)..controls (293,544) and (293,537)..(293,518)---(293,275)..controls (293,256) and (292,255)..(274,255)---(107,255)..controls (92,255) and (87,255)..cycle;
numerals.push(shrink_glyph(40, 444)*four);
path[] five = { scale(height/glyph_height)*shift(-(100+409)/2, -glyph_height/2)*((100,-18)..controls (100,-29) and (102,-34)..(108,-34)..controls (143,-34) and (408,-11)..(408,198)..controls (408,353) and (304,392)..(183,392)..controls (171,392) and (160,392)..(149,391)..controls (141,391) and (138,394)..(138,402)..controls (138,409) and (150,534)..(152,551)..controls (153,560) and (152,559)..(162,558)..controls (233,551) and (294,546)..(372,546)..controls (398,546) and (405,548)..(406,563)..controls (407,588) and (409,627)..(409,631)..controls (409,639) and (409,640)..(399,640)---(391,640)..controls (385,640) and (380,640)..(380,635)..controls (379,625) and (379,607)..(374,607)..controls (208,607) and (150,618)..(145,618)..controls (139,618) and (130,618)..(129,612)..controls (119,532) and (102,361)..(102,347)..controls (102,338) and (106,337)..(116,337)..controls (126,337) and (135,338)..(145,338)..controls (241,338) and (342,312)..(342,194)..controls (342,8) and (183,7)..(108,-4)..controls (102,-5) and (100,-10)..cycle) };
numerals.push(five);
path[] five = { (100,-18)..controls (100,-29) and (102,-34)..(108,-34)..controls (143,-34) and (408,-11)..(408,198)..controls (408,353) and (304,392)..(183,392)..controls (171,392) and (160,392)..(149,391)..controls (141,391) and (138,394)..(138,402)..controls (138,409) and (150,534)..(152,551)..controls (153,560) and (152,559)..(162,558)..controls (233,551) and (294,546)..(372,546)..controls (398,546) and (405,548)..(406,563)..controls (407,588) and (409,627)..(409,631)..controls (409,639) and (409,640)..(399,640)---(391,640)..controls (385,640) and (380,640)..(380,635)..controls (379,625) and (379,607)..(374,607)..controls (208,607) and (150,618)..(145,618)..controls (139,618) and (130,618)..(129,612)..controls (119,532) and (102,361)..(102,347)..controls (102,338) and (106,337)..(116,337)..controls (126,337) and (135,338)..(145,338)..controls (241,338) and (342,312)..(342,194)..controls (342,8) and (183,7)..(108,-4)..controls (102,-5) and (100,-10)..cycle };
numerals.push(shrink_glyph(100, 409)*five);
path[] six = scale(height/glyph_height)*shift(-(45+440)/2, -glyph_height/2)*((45,218)..controls (45,48) and (137,-22)..(249,-22)..controls (357,-22) and (440,54)..(440,171)..controls (440,284) and (363,352)..(252,352)..controls (210,352) and (172,342)..(143,333)..controls (134,330) and (131,327)..(131,332)..controls (131,339) and (139,361)..(141,367)..controls (174,453) and (230,527)..(354,599)..controls (366,606) and (374,608)..(374,616)..controls (374,620) and (364,637)..(360,637)..controls (344,637) and (45,514)..cycle^^(116,222)..controls (116,248) and (119,276)..(124,297)..controls (126,305) and (131,307)..(153,313)..controls (179,320) and (205,322)..(228,322)..controls (314,322) and (371,278)..(371,158)..controls (371,81) and (331,4)..(258,4)..controls (146,4) and (116,110)..cycle);
numerals.push(six);
path[] six = (45,218)..controls (45,48) and (137,-22)..(249,-22)..controls (357,-22) and (440,54)..(440,171)..controls (440,284) and (363,352)..(252,352)..controls (210,352) and (172,342)..(143,333)..controls (134,330) and (131,327)..(131,332)..controls (131,339) and (139,361)..(141,367)..controls (174,453) and (230,527)..(354,599)..controls (366,606) and (374,608)..(374,616)..controls (374,620) and (364,637)..(360,637)..controls (344,637) and (45,514)..cycle^^(116,222)..controls (116,248) and (119,276)..(124,297)..controls (126,305) and (131,307)..(153,313)..controls (179,320) and (205,322)..(228,322)..controls (314,322) and (371,278)..(371,158)..controls (371,81) and (331,4)..(258,4)..controls (146,4) and (116,110)..cycle;
numerals.push(shrink_glyph(45, 440)*six);
path[] traveler_glyph = { scale(face_letter_scale_adjustment*height/glyph_height)*shift(-(20+670)/2, -glyph_height/2)*((20,544)..controls (20,535) and (30,535)..(40,535)..controls (49,535) and (52,539)..(53,552)---(60,622)..controls (61,633) and (105,635)..(157,635)---(301,635)..controls (307,635) and (308,594)..(308,545)..controls (308,436) and (304,27)..(294,27)---(232,27)..controls (216,27) and (214,27)..(214,15)..controls (214,-2) and (215,-3)..(228,-3)..controls (251,-3) and (319,0)..(349,0)..controls (379,0) and (446,-3)..(469,-3)..controls (479,-3) and (480,-1)..(480,14)..controls (480,26) and (480,27)..(469,27)---(395,27)..controls (393,27) and (393,53)..(393,92)..controls (393,217) and (399,474)..(399,477)..controls (400,534) and (399,635)..(409,635)---(525,635)..controls (582,635) and (638,633)..(638,627)..controls (638,621) and (635,554)..(635,549)..controls (635,539) and (638,535)..(650,535)..controls (664,535) and (666,537)..(666,545)..controls (666,623) and (670,656)..(670,675)..controls (670,685) and (667,686)..(653,686)..controls (645,686) and (641,684)..(640,674)..controls (639,664) and (589,663)..(531,663)---(174,663)..controls (121,663) and (66,663)..(66,669)---(66,680)..controls (66,686) and (61,686)..(53,686)..controls (38,686) and (38,685)..(37,672)..controls (33,622) and (20,546)..cycle) };
numerals.push(traveler_glyph);
path[] traveler_glyph = { (20,544)..controls (20,535) and (30,535)..(40,535)..controls (49,535) and (52,539)..(53,552)---(60,622)..controls (61,633) and (105,635)..(157,635)---(301,635)..controls (307,635) and (308,594)..(308,545)..controls (308,436) and (304,27)..(294,27)---(232,27)..controls (216,27) and (214,27)..(214,15)..controls (214,-2) and (215,-3)..(228,-3)..controls (251,-3) and (319,0)..(349,0)..controls (379,0) and (446,-3)..(469,-3)..controls (479,-3) and (480,-1)..(480,14)..controls (480,26) and (480,27)..(469,27)---(395,27)..controls (393,27) and (393,53)..(393,92)..controls (393,217) and (399,474)..(399,477)..controls (400,534) and (399,635)..(409,635)---(525,635)..controls (582,635) and (638,633)..(638,627)..controls (638,621) and (635,554)..(635,549)..controls (635,539) and (638,535)..(650,535)..controls (664,535) and (666,537)..(666,545)..controls (666,623) and (670,656)..(670,675)..controls (670,685) and (667,686)..(653,686)..controls (645,686) and (641,684)..(640,674)..controls (639,664) and (589,663)..(531,663)---(174,663)..controls (121,663) and (66,663)..(66,669)---(66,680)..controls (66,686) and (61,686)..(53,686)..controls (38,686) and (38,685)..(37,672)..controls (33,622) and (20,546)..cycle };
numerals.push(shrink_glyph(20, 670, true)*traveler_glyph);
path[] knight_glyph = { scale(face_letter_scale_adjustment*height/glyph_height)*shift(-(40+650)/2, -glyph_height/2)*((40,15)..controls (40,-2) and (41,-3)..(54,-3)..controls (77,-3) and (139,0)..(169,0)..controls (199,0) and (266,-3)..(289,-3)..controls (299,-3) and (300,-1)..(300,14)..controls (300,26) and (300,27)..(289,27)---(216,27)..controls (205,27) and (205,172)..(205,298)..controls (205,310) and (207,310)..(219,310)---(239,310)..controls (254,310) and (254,310)..(261,302)---(478,45)..controls (484,38) and (490,34)..(490,31)..controls (490,29) and (486,27)..(473,27)---(443,27)..controls (427,27) and (425,27)..(425,15)..controls (425,-2) and (426,-3)..(439,-3)..controls (462,-3) and (509,0)..(539,0)..controls (569,0) and (616,-3)..(639,-3)..controls (649,-3) and (650,-1)..(650,14)..controls (650,26) and (650,27)..(639,27)---(625,27)..controls (611,27) and (603,34)..(594,44)---(325,354)..controls (315,366) and (312,365)..(322,376)..controls (380,445) and (537,634)..(538,634)---(587,634)..controls (603,634) and (605,634)..(605,646)..controls (605,663) and (604,664)..(591,664)..controls (568,664) and (541,661)..(511,661)..controls (481,661) and (442,664)..(426,664)..controls (413,664) and (406,664)..(406,649)..controls (406,634) and (414,634)..(426,634)---(463,634)..controls (474,634) and (478,632)..(478,629)..controls (478,625) and (474,620)..(469,613)..controls (432,566) and (265,331)..(240,331)---(218,331)..controls (206,331) and (205,337)..(205,351)---(205,476)..controls (205,532) and (209,634)..(219,634)---(273,634)..controls (289,634) and (291,634)..(291,646)..controls (291,663) and (290,664)..(277,664)..controls (254,664) and (201,661)..(171,661)..controls (141,661) and (85,664)..(69,664)..controls (56,664) and (49,664)..(49,649)..controls (49,634) and (57,634)..(69,634)---(113,634)..controls (120,634) and (121,559)..(121,487)---(121,197)..controls (121,105) and (120,27)..(113,27)---(58,27)..controls (42,27) and (40,27)..cycle) };
numerals.push(knight_glyph);
path[] knight_glyph = { (40,15)..controls (40,-2) and (41,-3)..(54,-3)..controls (77,-3) and (139,0)..(169,0)..controls (199,0) and (266,-3)..(289,-3)..controls (299,-3) and (300,-1)..(300,14)..controls (300,26) and (300,27)..(289,27)---(216,27)..controls (205,27) and (205,172)..(205,298)..controls (205,310) and (207,310)..(219,310)---(239,310)..controls (254,310) and (254,310)..(261,302)---(478,45)..controls (484,38) and (490,34)..(490,31)..controls (490,29) and (486,27)..(473,27)---(443,27)..controls (427,27) and (425,27)..(425,15)..controls (425,-2) and (426,-3)..(439,-3)..controls (462,-3) and (509,0)..(539,0)..controls (569,0) and (616,-3)..(639,-3)..controls (649,-3) and (650,-1)..(650,14)..controls (650,26) and (650,27)..(639,27)---(625,27)..controls (611,27) and (603,34)..(594,44)---(325,354)..controls (315,366) and (312,365)..(322,376)..controls (380,445) and (537,634)..(538,634)---(587,634)..controls (603,634) and (605,634)..(605,646)..controls (605,663) and (604,664)..(591,664)..controls (568,664) and (541,661)..(511,661)..controls (481,661) and (442,664)..(426,664)..controls (413,664) and (406,664)..(406,649)..controls (406,634) and (414,634)..(426,634)---(463,634)..controls (474,634) and (478,632)..(478,629)..controls (478,625) and (474,620)..(469,613)..controls (432,566) and (265,331)..(240,331)---(218,331)..controls (206,331) and (205,337)..(205,351)---(205,476)..controls (205,532) and (209,634)..(219,634)---(273,634)..controls (289,634) and (291,634)..(291,646)..controls (291,663) and (290,664)..(277,664)..controls (254,664) and (201,661)..(171,661)..controls (141,661) and (85,664)..(69,664)..controls (56,664) and (49,664)..(49,649)..controls (49,634) and (57,634)..(69,634)---(113,634)..controls (120,634) and (121,559)..(121,487)---(121,197)..controls (121,105) and (120,27)..(113,27)---(58,27)..controls (42,27) and (40,27)..cycle };
numerals.push(shrink_glyph(40, 650, true)*knight_glyph);
path[] wizard_glyph = { scale(face_letter_scale_adjustment*height/glyph_height)*shift(-(10+887)/2, -glyph_height/2)*((10,649)..controls (10,634) and (18,634)..(30,634)---(65,634)..controls (72,634) and (225,116)..(227,110)..controls (253,32) and (261,-25)..(279,-25)..controls (292,-25) and (299,-4)..(320,26)..controls (331,42) and (337,43)..(347,68)---(489,440)..controls (495,456) and (498,465)..(501,465)..controls (504,465) and (506,457)..(511,440)..controls (553,293) and (602,113)..(603,110)..controls (629,32) and (637,-25)..(655,-25)..controls (668,-25) and (675,-4)..(696,26)..controls (707,42) and (713,43)..(723,68)---(944,611)..controls (952,629) and (953,634)..(980,634)..controls (996,634) and (998,636)..(998,648)..controls (998,662) and (997,664)..(984,664)..controls (974,664) and (946,661)..(916,661)..controls (886,661) and (829,664)..(813,664)..controls (800,664) and (796,664)..(796,649)..controls (796,634) and (801,634)..(813,634)---(878,634)..controls (886,634) and (887,628)..(887,618)..controls (887,567) and (773,276)..(722,140)..controls (709,107) and (704,90)..(700,90)..controls (695,90) and (692,108)..(681,142)..controls (675,163) and (609,386)..(571,526)..controls (568,538) and (553,601)..(553,625)..controls (553,630) and (554,634)..(556,634)---(620,634)..controls (633,634) and (637,634)..(637,646)..controls (637,663) and (636,664)..(623,664)..controls (600,664) and (533,661)..(503,661)..controls (473,661) and (408,664)..(392,664)..controls (379,664) and (375,664)..(375,649)..controls (375,634) and (380,634)..(392,634)---(452,634)..controls (454,634) and (466,602)..(479,556)..controls (483,540) and (488,533)..(488,525)..controls (488,520) and (486,515)..(483,507)---(340,142)..controls (331,118) and (327,106)..(324,106)..controls (321,106) and (319,118)..(311,142)..controls (305,162) and (233,380)..(190,526)..controls (187,536) and (163,620)..(163,625)..controls (163,634) and (171,634)..(173,634)---(223,634)..controls (239,634) and (241,634)..(241,646)..controls (241,663) and (240,664)..(227,664)..controls (204,664) and (153,661)..(123,661)..controls (93,661) and (46,664)..(30,664)..controls (17,664) and (10,664)..cycle) };
numerals.push(wizard_glyph);
path[] wizard_glyph = { (10,649)..controls (10,634) and (18,634)..(30,634)---(65,634)..controls (72,634) and (225,116)..(227,110)..controls (253,32) and (261,-25)..(279,-25)..controls (292,-25) and (299,-4)..(320,26)..controls (331,42) and (337,43)..(347,68)---(489,440)..controls (495,456) and (498,465)..(501,465)..controls (504,465) and (506,457)..(511,440)..controls (553,293) and (602,113)..(603,110)..controls (629,32) and (637,-25)..(655,-25)..controls (668,-25) and (675,-4)..(696,26)..controls (707,42) and (713,43)..(723,68)---(944,611)..controls (952,629) and (953,634)..(980,634)..controls (996,634) and (998,636)..(998,648)..controls (998,662) and (997,664)..(984,664)..controls (974,664) and (946,661)..(916,661)..controls (886,661) and (829,664)..(813,664)..controls (800,664) and (796,664)..(796,649)..controls (796,634) and (801,634)..(813,634)---(878,634)..controls (886,634) and (887,628)..(887,618)..controls (887,567) and (773,276)..(722,140)..controls (709,107) and (704,90)..(700,90)..controls (695,90) and (692,108)..(681,142)..controls (675,163) and (609,386)..(571,526)..controls (568,538) and (553,601)..(553,625)..controls (553,630) and (554,634)..(556,634)---(620,634)..controls (633,634) and (637,634)..(637,646)..controls (637,663) and (636,664)..(623,664)..controls (600,664) and (533,661)..(503,661)..controls (473,661) and (408,664)..(392,664)..controls (379,664) and (375,664)..(375,649)..controls (375,634) and (380,634)..(392,634)---(452,634)..controls (454,634) and (466,602)..(479,556)..controls (483,540) and (488,533)..(488,525)..controls (488,520) and (486,515)..(483,507)---(340,142)..controls (331,118) and (327,106)..(324,106)..controls (321,106) and (319,118)..(311,142)..controls (305,162) and (233,380)..(190,526)..controls (187,536) and (163,620)..(163,625)..controls (163,634) and (171,634)..(173,634)---(223,634)..controls (239,634) and (241,634)..(241,646)..controls (241,663) and (240,664)..(227,664)..controls (204,664) and (153,661)..(123,661)..controls (93,661) and (46,664)..(30,664)..controls (17,664) and (10,664)..cycle };
numerals.push(shrink_glyph(10, 887, true)*wizard_glyph);
// Is this even the same across suits? or is it like, *C*ount of Cards, *Q*ueen of Puppets, ??? of Bread, etc?
path[] noble_glyph = { scale(face_letter_scale_adjustment*height/glyph_height)*shift(-(40+774)/2, -glyph_height/2)*((40,15)..controls (40,-2) and (41,-3)..(54,-3)..controls (77,-3) and (106,0)..(136,0)..controls (166,0) and (219,-3)..(242,-3)..controls (252,-3) and (253,-1)..(253,14)..controls (253,26) and (253,27)..(242,27)---(156,27)..controls (153,27) and (151,68)..(151,129)..controls (151,224) and (152,366)..(152,472)..controls (152,525) and (152,569)..(153,594)..controls (153,609) and (154,614)..(156,614)..controls (159,614) and (164,606)..(172,596)---(664,-2)..controls (670,-9) and (677,-18)..(682,-18)..controls (687,-18) and (692,-12)..(692,4)..controls (692,15) and (704,425)..(705,580)..controls (705,617) and (708,639)..(709,639)---(756,639)..controls (772,639) and (774,639)..(774,651)..controls (774,668) and (773,669)..(760,669)..controls (737,669) and (708,666)..(678,666)..controls (648,666) and (595,669)..(572,669)..controls (562,669) and (561,667)..(561,652)..controls (561,640) and (561,639)..(572,639)---(666,639)..controls (667,639) and (667,617)..(667,583)..controls (667,482) and (669,305)..(669,207)---(669,165)..controls (669,145) and (668,137)..(665,137)..controls (662,137) and (656,146)..(647,157)---(241,656)..controls (233,666) and (232,669)..(221,669)..controls (215,669) and (188,666)..(166,666)..controls (145,666) and (68,669)..(54,669)..controls (44,669) and (43,667)..(43,652)..controls (43,640) and (43,639)..(54,639)--(122,639)..controls (122,639) and (119,301)..(114,129)..controls (112,68) and (115,27)..(102,27)---(58,27)..controls (42,27) and (40,27)..cycle) };
numerals.push(noble_glyph);
path[] noble_glyph = { (40,15)..controls (40,-2) and (41,-3)..(54,-3)..controls (77,-3) and (106,0)..(136,0)..controls (166,0) and (219,-3)..(242,-3)..controls (252,-3) and (253,-1)..(253,14)..controls (253,26) and (253,27)..(242,27)---(156,27)..controls (153,27) and (151,68)..(151,129)..controls (151,224) and (152,366)..(152,472)..controls (152,525) and (152,569)..(153,594)..controls (153,609) and (154,614)..(156,614)..controls (159,614) and (164,606)..(172,596)---(664,-2)..controls (670,-9) and (677,-18)..(682,-18)..controls (687,-18) and (692,-12)..(692,4)..controls (692,15) and (704,425)..(705,580)..controls (705,617) and (708,639)..(709,639)---(756,639)..controls (772,639) and (774,639)..(774,651)..controls (774,668) and (773,669)..(760,669)..controls (737,669) and (708,666)..(678,666)..controls (648,666) and (595,669)..(572,669)..controls (562,669) and (561,667)..(561,652)..controls (561,640) and (561,639)..(572,639)---(666,639)..controls (667,639) and (667,617)..(667,583)..controls (667,482) and (669,305)..(669,207)---(669,165)..controls (669,145) and (668,137)..(665,137)..controls (662,137) and (656,146)..(647,157)---(241,656)..controls (233,666) and (232,669)..(221,669)..controls (215,669) and (188,666)..(166,666)..controls (145,666) and (68,669)..(54,669)..controls (44,669) and (43,667)..(43,652)..controls (43,640) and (43,639)..(54,639)--(122,639)..controls (122,639) and (119,301)..(114,129)..controls (112,68) and (115,27)..(102,27)---(58,27)..controls (42,27) and (40,27)..cycle };
numerals.push(shrink_glyph(40, 774, true)*noble_glyph);

19
suits.asy Normal file
View File

@ -0,0 +1,19 @@
import "puppets.asy" as puppets_suit;
import "bread.asy" as bread_suit;
import "chairs.asy" as chairs_suit;
import "blades.asy" as blades_suit;
import "wheels.asy" as wheels_suit;
int PUPPETS = 0;
int BREAD = 1;
int CHAIRS = 2;
int BLADES = 3;
int WHEELS = 4;
int CARDS = 5;
path icons[][] = { {}, {}, {}, {}, {}, {} };
icons[BREAD] = bread;
icons[CHAIRS] = chair;
icons[WHEELS] = wheel;
icons[CARDS] = null;