chalk-talk 0.16.0 → 0.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/lottie/NOTICE.md +4 -3
- package/assets/player.html +3 -3
- package/embed-mermaid.js +130 -130
- package/embed.js +5 -5
- package/markdown.js +1 -1
- package/mount.global.js +400 -400
- package/mount.js +1 -1
- package/package.json +2 -1
- package/player.js +4 -4
- package/references/examples/caverna.json +128 -0
- package/references/examples/estoicismo.json +78 -0
- package/references/examples/fila.json +102 -0
- package/references/examples/juros.json +51 -0
- package/references/examples/pitagoras.json +64 -0
- package/references/examples/requisicao.json +86 -0
- package/references/hooks.md +16 -0
- package/references/molds.md +17 -0
- package/references/recipe.md +81 -0
- package/references/text.md +115 -0
- package/scripts/build.mjs +15 -3
- package/scripts/contract.mjs +48 -2
- package/scripts/mermaid.mjs +1 -1
- package/scripts/syntax.mjs +2 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "platao-caverna",
|
|
3
|
+
"title": "Platão ↔ por dentro da caverna",
|
|
4
|
+
"category": "Filosofia",
|
|
5
|
+
"width": 900,
|
|
6
|
+
"height": 660,
|
|
7
|
+
"background": "plain",
|
|
8
|
+
"params": {
|
|
9
|
+
"afastamento": { "label": "afastamento do fogo (%)", "min": 0, "max": 100, "step": 10, "value": 50 }
|
|
10
|
+
},
|
|
11
|
+
"vars": {
|
|
12
|
+
"distancia": "100 + afastamento * 0.8",
|
|
13
|
+
"objeto": "555 - distancia",
|
|
14
|
+
"projecao": "410 / distancia",
|
|
15
|
+
"sombraY": "350 - 28 * projecao",
|
|
16
|
+
"sombraR": "6 * projecao"
|
|
17
|
+
},
|
|
18
|
+
"learning": {
|
|
19
|
+
"goal": "Entre na cena: descubra o que produz as sombras e por que aprender pode mudar nossa maneira de ver.",
|
|
20
|
+
"question": "Uma imagem muito convincente basta para saber o que aconteceu? O que você investigaria antes de acreditar?",
|
|
21
|
+
"answer": "Uma imagem pode ser uma pista, não uma explicação completa. Investigar a origem, o contexto e outras evidências ajuda a revisar a primeira interpretação.",
|
|
22
|
+
"caveat": "A alegoria está na República, livro VII. O desenho é um corte esquemático, não uma reconstrução histórica: luz pontual e projeção simplificada ajudam a visualizar as sombras. A saída remete à educação e à ideia do Bem, não apenas a trocar uma opinião por outra; retornar e educar também faz parte da alegoria."
|
|
23
|
+
},
|
|
24
|
+
"steps": [
|
|
25
|
+
{ "type": "text", "chapter": "Um mundo de sombras", "at": [40, 59], "text": "e se tudo o que você conhecesse fosse uma sombra?", "size": 39, "duration": 900, "say": "Imagine conhecer o mundo inteiro apenas pelas sombras de uma parede. Vamos entrar na caverna de Platão." },
|
|
26
|
+
|
|
27
|
+
{ "type": "polygon", "points": [[620, 105], [857, 105], [857, 479], [590, 479]], "style": { "color": "#F4EACB", "fill": "#F4EACB", "fillStyle": "solid", "roughness": 0.6 }, "duration": 90 },
|
|
28
|
+
{ "type": "polygon", "points": [[45, 136], [110, 108], [213, 116], [299, 94], [410, 112], [492, 99], [564, 129], [615, 169], [644, 237], [654, 338], [686, 436], [620, 478], [45, 478]], "style": { "color": "#DDD7CE", "fill": "#E7E1D8", "fillStyle": "solid", "roughness": 0.8, "width": 1.6 }, "duration": 180 },
|
|
29
|
+
{ "type": "polygon", "points": [[46, 136], [110, 108], [213, 116], [299, 94], [410, 112], [492, 99], [564, 129], [615, 169], [644, 237], [654, 338], [686, 436], [660, 426], [625, 331], [610, 245], [582, 190], [535, 160], [489, 145], [405, 151], [299, 136], [215, 156], [112, 149], [46, 177]], "style": { "color": "#8D8478", "fill": "#C6BDAF", "fillStyle": "solid", "width": 1.5, "roughness": 0.9 }, "duration": 220 },
|
|
30
|
+
{ "type": "polygon", "points": [[45, 431], [173, 419], [270, 445], [356, 431], [470, 450], [579, 428], [654, 409], [686, 436], [857, 451], [857, 482], [45, 482]], "style": { "color": "#B5A68E", "fill": "#D6C8AF", "fillStyle": "solid", "width": 1.2 }, "duration": 150 },
|
|
31
|
+
{ "type": "polyline", "points": [[102, 121], [122, 135], [116, 148]], "style": { "color": "#8D8478", "width": 1.2 }, "duration": 80 },
|
|
32
|
+
{ "type": "polyline", "points": [[286, 104], [300, 122], [331, 128]], "style": { "color": "#8D8478", "width": 1.2 }, "duration": 80 },
|
|
33
|
+
{ "type": "polyline", "points": [[480, 109], [493, 130], [520, 135]], "style": { "color": "#8D8478", "width": 1.2 }, "duration": 80 },
|
|
34
|
+
{ "type": "polyline", "points": [[588, 156], [581, 174], [602, 205]], "style": { "color": "#8D8478", "width": 1.2 }, "duration": 80 },
|
|
35
|
+
{ "type": "polygon", "points": [[194, 151], [202, 177], [211, 155]], "style": { "color": "#A79C8B", "fill": "#C6BDAF", "fillStyle": "solid", "width": 1 }, "duration": 70 },
|
|
36
|
+
{ "type": "polygon", "points": [[445, 149], [458, 181], [466, 147]], "style": { "color": "#A79C8B", "fill": "#C6BDAF", "fillStyle": "solid", "width": 1 }, "duration": 70 },
|
|
37
|
+
|
|
38
|
+
{ "type": "polygon", "points": [[66, 197], [174, 170], [174, 409], [66, 439]], "style": { "color": "#9B9387", "fill": "#F0E7D7", "fillStyle": "solid", "width": 1.8, "roughness": 0.7 }, "duration": 200, "say": "Aqui está a parede. Para quem está preso e só olha para ela, as sombras parecem ser as próprias coisas." },
|
|
39
|
+
{ "type": "line", "from": [75, 208], "to": [75, 425], "style": { "color": "#D3C9B9", "width": 1.2 }, "duration": 100 },
|
|
40
|
+
{ "type": "line", "from": [83, 429], "to": [167, 406], "style": { "color": "#C3B8A7", "width": 1.2 }, "duration": 80 },
|
|
41
|
+
{ "type": "ellipse", "id": "sombra-cabeca", "center": [123, "sombraY - 5 * projecao"], "rx": "sombraR", "ry": "sombraR * 1.1", "style": { "color": "#59616D", "fill": "#59616D", "fillStyle": "solid", "roughness": 0.6, "opacity": 0.8, "width": 1 }, "duration": 160 },
|
|
42
|
+
{ "type": "polygon", "points": [[123, "sombraY + projecao"], ["123 - 8 * projecao", "sombraY + 13 * projecao"], ["123 - 4 * projecao", "sombraY + 15 * projecao"], ["123 + 8 * projecao", "sombraY + 15 * projecao"], ["123 + 5 * projecao", "sombraY + 4 * projecao"]], "style": { "color": "#59616D", "fill": "#59616D", "fillStyle": "solid", "roughness": 0.7, "opacity": 0.8, "width": 1 }, "duration": 150 },
|
|
43
|
+
{ "type": "ellipse", "center": [123, "sombraY + 18 * projecao"], "rx": "10 * projecao", "ry": "2 * projecao", "style": { "color": "#59616D", "fill": "#59616D", "fillStyle": "solid", "roughness": 0.5, "opacity": 0.8, "width": 1 }, "duration": 100 },
|
|
44
|
+
{ "type": "text", "at": [120, 471], "text": "a parede", "anchor": "middle", "size": 25, "duration": 280, "style": { "color": "#5E5A52" } },
|
|
45
|
+
|
|
46
|
+
{ "type": "ellipse", "center": [232, 427], "rx": 42, "ry": 9, "style": { "color": "#B7AA93", "fill": "#B7AA93", "fillStyle": "solid", "width": 1 }, "duration": 80 },
|
|
47
|
+
{ "type": "polygon", "points": [[228, 362], [248, 369], [253, 397], [239, 407], [214, 398], [214, 380]], "style": { "color": "#4D5663", "fill": "#657489", "fillStyle": "solid", "width": 1.6 }, "duration": 130, "say": "As pessoas estão voltadas para a parede. Elas não veem a fonte de luz nem os objetos que passam atrás." },
|
|
48
|
+
{ "type": "circle", "center": [231, 347], "r": 14, "style": { "color": "#4D5663", "fill": "#D8B99B", "fillStyle": "solid", "roughness": 0.7, "width": 1.6 }, "duration": 110 },
|
|
49
|
+
{ "type": "curve", "points": [[218, 343], [222, 332], [237, 333], [245, 341]], "style": { "color": "#4D5663", "width": 4 }, "duration": 90 },
|
|
50
|
+
{ "type": "polyline", "points": [[217, 376], [198, 395], [219, 401]], "style": { "color": "#4D5663", "width": 6 }, "duration": 100 },
|
|
51
|
+
{ "type": "polyline", "points": [[241, 400], [215, 414], [191, 421]], "style": { "color": "#4D5663", "width": 8 }, "duration": 100 },
|
|
52
|
+
{ "type": "polyline", "points": [[228, 401], [241, 420], [220, 427]], "style": { "color": "#4D5663", "width": 7 }, "duration": 100 },
|
|
53
|
+
{ "type": "line", "from": [218, 347], "to": [211, 351], "style": { "color": "#4D5663", "width": 1.8 }, "duration": 70 },
|
|
54
|
+
|
|
55
|
+
{ "type": "ellipse", "center": [304, 446], "rx": 40, "ry": 8, "style": { "color": "#B7AA93", "fill": "#B7AA93", "fillStyle": "solid", "width": 1 }, "duration": 80 },
|
|
56
|
+
{ "type": "polygon", "points": [[295, 377], [316, 382], [321, 415], [307, 424], [285, 416], [286, 394]], "style": { "color": "#4D5663", "fill": "#8B8A81", "fillStyle": "solid", "width": 1.6 }, "duration": 120 },
|
|
57
|
+
{ "type": "circle", "center": [300, 361], "r": 14, "style": { "color": "#4D5663", "fill": "#D8B99B", "fillStyle": "solid", "roughness": 0.7, "width": 1.6 }, "duration": 100 },
|
|
58
|
+
{ "type": "curve", "points": [[288, 357], [291, 347], [305, 347], [313, 355]], "style": { "color": "#4D5663", "width": 4 }, "duration": 90 },
|
|
59
|
+
{ "type": "polyline", "points": [[287, 394], [273, 413], [289, 419]], "style": { "color": "#4D5663", "width": 6 }, "duration": 100 },
|
|
60
|
+
{ "type": "polyline", "points": [[307, 419], [282, 434], [264, 440]], "style": { "color": "#4D5663", "width": 8 }, "duration": 100 },
|
|
61
|
+
{ "type": "polyline", "points": [[295, 420], [311, 438], [293, 445]], "style": { "color": "#4D5663", "width": 7 }, "duration": 100 },
|
|
62
|
+
{ "type": "line", "from": [287, 361], "to": [280, 365], "style": { "color": "#4D5663", "width": 1.8 }, "duration": 60 },
|
|
63
|
+
|
|
64
|
+
{ "type": "circle", "center": [253, 408], "r": 4, "style": { "color": "#8C8578", "width": 1.5 }, "duration": 70 },
|
|
65
|
+
{ "type": "circle", "center": [260, 410], "r": 4, "style": { "color": "#8C8578", "width": 1.5 }, "duration": 70 },
|
|
66
|
+
{ "type": "circle", "center": [267, 413], "r": 4, "style": { "color": "#8C8578", "width": 1.5 }, "duration": 70 },
|
|
67
|
+
{ "type": "circle", "center": [274, 415], "r": 4, "style": { "color": "#8C8578", "width": 1.5 }, "duration": 70 },
|
|
68
|
+
{ "type": "polygon", "points": [[180, 445], [194, 438], [206, 447], [202, 455], [183, 455]], "style": { "color": "#A69883", "fill": "#C6B79E", "fillStyle": "solid", "width": 1 }, "duration": 80 },
|
|
69
|
+
{ "type": "text", "at": [290, 512], "text": "o único mundo que conhecem", "anchor": "middle", "size": 25, "duration": 350, "style": { "color": "#5E5A52" } },
|
|
70
|
+
|
|
71
|
+
{ "type": "polygon", "chapter": "O que a parede não mostra", "points": [[555, 350], [174, "sombraY - 14 * projecao"], [66, "sombraY + 23 * projecao"]], "style": { "color": "#E9B952", "fill": "#F3CB62", "fillStyle": "solid", "opacity": 0.15, "width": 0, "roughness": 0 }, "duration": 200, "say": "Agora olhe por trás. O fogo ilumina uma estatueta. Entre a luz e a parede, ela produz a sombra que as pessoas enxergam." },
|
|
72
|
+
{ "type": "polygon", "points": [[348, 375], [484, 368], [484, 424], [348, 432]], "style": { "color": "#928778", "fill": "#B8AD9C", "fillStyle": "solid", "width": 1.5 }, "duration": 140 },
|
|
73
|
+
{ "type": "polygon", "points": [[344, 367], [480, 360], [491, 369], [349, 380]], "style": { "color": "#928778", "fill": "#D4C9B7", "fillStyle": "solid", "width": 1.3 }, "duration": 120 },
|
|
74
|
+
{ "type": "polyline", "points": [[350, 401], [393, 398], [393, 427]], "style": { "color": "#A29583", "width": 1.3 }, "duration": 90 },
|
|
75
|
+
{ "type": "polyline", "points": [[434, 374], [434, 396], [481, 393]], "style": { "color": "#A29583", "width": 1.3 }, "duration": 90 },
|
|
76
|
+
{ "type": "line", "from": ["objeto", 347], "to": ["objeto", 389], "style": { "color": "#6B5845", "width": 3 }, "duration": 110 },
|
|
77
|
+
{ "type": "circle", "id": "estatueta-cabeca", "center": ["objeto", 317], "r": 6, "style": { "color": "#6B5845", "fill": "#A88760", "fillStyle": "solid", "roughness": 0.5, "width": 1.5 }, "duration": 100 },
|
|
78
|
+
{ "type": "polygon", "points": [["objeto", 323], ["objeto - 8", 335], ["objeto - 4", 337], ["objeto + 8", 337], ["objeto + 5", 326]], "style": { "color": "#6B5845", "fill": "#A88760", "fillStyle": "solid", "roughness": 0.5, "width": 1.3 }, "duration": 130 },
|
|
79
|
+
{ "type": "ellipse", "center": ["objeto", 340], "rx": 10, "ry": 2, "style": { "color": "#6B5845", "fill": "#A88760", "fillStyle": "solid", "width": 1 }, "duration": 80 },
|
|
80
|
+
{ "type": "ellipse", "center": [553, 424], "rx": 42, "ry": 9, "style": { "color": "#B9A58B", "fill": "#B9A58B", "fillStyle": "solid", "width": 1 }, "duration": 80 },
|
|
81
|
+
{ "type": "polyline", "points": [[524, 417], [574, 409]], "style": { "color": "#795D43", "width": 8 }, "duration": 90 },
|
|
82
|
+
{ "type": "polyline", "points": [[532, 407], [575, 420]], "style": { "color": "#795D43", "width": 7 }, "duration": 90 },
|
|
83
|
+
{ "type": "polygon", "points": [[534, 404], [529, 389], [539, 372], [538, 355], [550, 366], [557, 340], [562, 367], [576, 384], [572, 405], [553, 412]], "style": { "color": "#B96C36", "fill": "#D98B45", "fillStyle": "solid", "roughness": 1, "width": 1.5 }, "duration": 220 },
|
|
84
|
+
{ "type": "polygon", "points": [[543, 403], [541, 389], [552, 372], [555, 387], [564, 380], [566, 399], [556, 407]], "style": { "color": "#E9BC55", "fill": "#F1CE72", "fillStyle": "solid", "roughness": 0.8, "width": 1 }, "duration": 150 },
|
|
85
|
+
{ "type": "curve", "points": [[546, 330], [542, 319], [546, 307]], "style": { "color": "#A69883", "width": 1.5, "opacity": 0.5 }, "duration": 120 },
|
|
86
|
+
{ "type": "curve", "points": [[566, 326], [571, 313], [567, 301]], "style": { "color": "#A69883", "width": 1.5, "opacity": 0.5 }, "duration": 120 },
|
|
87
|
+
{ "type": "text", "at": ["objeto + 14", 322], "text": "objeto", "anchor": "start", "size": 25, "duration": 260, "style": { "color": "#6B5845" } },
|
|
88
|
+
{ "type": "text", "at": [553, 461], "text": "fogo", "anchor": "middle", "size": 25, "duration": 250, "style": { "color": "#9F6535" } },
|
|
89
|
+
{ "type": "text", "at": [450, 566], "text": "a sombra é real. mas ela não é o objeto.", "anchor": "middle", "size": 34, "duration": 650, "say": "Mova a estatueta com o controle abaixo. A mesma coisa pode projetar uma sombra maior ou menor. O que aparece não conta toda a história." },
|
|
90
|
+
|
|
91
|
+
{ "type": "circle", "chapter": "Reaprender a ver", "center": [782, 167], "r": 30, "style": { "color": "#C8A04F", "fill": "#F2D47B", "fillStyle": "solid", "roughness": 0.7, "width": 1.8 }, "duration": 200, "say": "Uma pessoa consegue sair. A luz primeiro ofusca: compreender de outro jeito exige tempo, não apenas trocar uma imagem por outra." },
|
|
92
|
+
{ "type": "line", "from": [782, 124], "to": [782, 112], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
93
|
+
{ "type": "line", "from": [822, 139], "to": [832, 132], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
94
|
+
{ "type": "line", "from": [826, 173], "to": [840, 175], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
95
|
+
{ "type": "line", "from": [815, 204], "to": [823, 214], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
96
|
+
{ "type": "line", "from": [775, 209], "to": [774, 224], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
97
|
+
{ "type": "line", "from": [740, 192], "to": [730, 200], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
98
|
+
{ "type": "line", "from": [739, 154], "to": [725, 150], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
99
|
+
{ "type": "line", "from": [757, 130], "to": [750, 118], "style": { "color": "#C8A04F", "width": 1.8 }, "duration": 70 },
|
|
100
|
+
|
|
101
|
+
{ "type": "curve", "points": [[625, 445], [662, 432], [699, 411], [746, 411], [795, 441]], "style": { "color": "#BAAB8F", "width": 12, "roughness": 0.9 }, "duration": 150 },
|
|
102
|
+
{ "type": "curve", "points": [[663, 435], [710, 425], [753, 427], [787, 447]], "style": { "color": "#F6E8C8", "width": 7, "roughness": 0.5 }, "duration": 120 },
|
|
103
|
+
{ "type": "polygon", "points": [[686, 439], [692, 426], [699, 435], [703, 420], [711, 440]], "style": { "color": "#758563", "fill": "#8C9B75", "fillStyle": "solid", "width": 1 }, "duration": 90 },
|
|
104
|
+
{ "type": "polygon", "points": [[822, 443], [827, 432], [832, 437], [838, 424], [843, 444]], "style": { "color": "#758563", "fill": "#8C9B75", "fillStyle": "solid", "width": 1 }, "duration": 90 },
|
|
105
|
+
{ "type": "polygon", "points": [[815, 382], [820, 320], [828, 319], [827, 382]], "style": { "color": "#8B785C", "fill": "#AA9370", "fillStyle": "solid", "width": 1 }, "duration": 110 },
|
|
106
|
+
{ "type": "line", "from": [824, 342], "to": [806, 326], "style": { "color": "#8B785C", "width": 3 }, "duration": 80 },
|
|
107
|
+
{ "type": "ellipse", "center": [811, 303], "rx": 29, "ry": 24, "style": { "color": "#77885F", "fill": "#B1BD8E", "fillStyle": "solid", "width": 1.3 }, "duration": 120 },
|
|
108
|
+
{ "type": "ellipse", "center": [834, 293], "rx": 22, "ry": 30, "style": { "color": "#77885F", "fill": "#A5B581", "fillStyle": "solid", "width": 1.3 }, "duration": 120 },
|
|
109
|
+
{ "type": "ellipse", "center": [829, 319], "rx": 26, "ry": 19, "style": { "color": "#77885F", "fill": "#BCC79A", "fillStyle": "solid", "width": 1.3 }, "duration": 120 },
|
|
110
|
+
{ "type": "ellipse", "center": [823, 383], "rx": 27, "ry": 5, "style": { "color": "#C6BDA0", "fill": "#C6BDA0", "fillStyle": "solid", "width": 1 }, "duration": 70 },
|
|
111
|
+
|
|
112
|
+
{ "type": "ellipse", "center": [725, 418], "rx": 31, "ry": 6, "style": { "color": "#C6BDA0", "fill": "#C6BDA0", "fillStyle": "solid", "width": 1 }, "duration": 70 },
|
|
113
|
+
{ "type": "polygon", "points": [[710, 345], [730, 344], [738, 378], [717, 383], [708, 365]], "style": { "color": "#4D5663", "fill": "#657489", "fillStyle": "solid", "width": 1.5 }, "duration": 120 },
|
|
114
|
+
{ "type": "circle", "center": [720, 328], "r": 13, "style": { "color": "#4D5663", "fill": "#D8B99B", "fillStyle": "solid", "roughness": 0.7, "width": 1.5 }, "duration": 100 },
|
|
115
|
+
{ "type": "curve", "points": [[708, 326], [709, 315], [722, 315], [731, 321]], "style": { "color": "#4D5663", "width": 4 }, "duration": 90 },
|
|
116
|
+
{ "type": "polyline", "points": [[717, 380], [714, 399], [703, 415]], "style": { "color": "#4D5663", "width": 7 }, "duration": 110 },
|
|
117
|
+
{ "type": "polyline", "points": [[731, 379], [734, 399], [743, 414]], "style": { "color": "#4D5663", "width": 7 }, "duration": 110 },
|
|
118
|
+
{ "type": "polyline", "points": [[730, 350], [743, 335], [735, 316]], "style": { "color": "#4D5663", "width": 5 }, "duration": 130 },
|
|
119
|
+
{ "type": "line", "from": [735, 316], "to": [725, 311], "style": { "color": "#4D5663", "width": 4 }, "duration": 90 },
|
|
120
|
+
{ "type": "polyline", "points": [[711, 352], [703, 369], [709, 377]], "style": { "color": "#4D5663", "width": 5 }, "duration": 110 },
|
|
121
|
+
{ "type": "text", "at": [754, 512], "text": "a luz primeiro incomoda", "anchor": "middle", "size": 24, "duration": 350 },
|
|
122
|
+
|
|
123
|
+
{ "type": "curve", "chapter": "Voltar com outra pergunta", "points": [[626, 466], [607, 498], [536, 504], [484, 490]], "style": { "color": "#657489", "width": 2, "dashed": true, "roughness": 0.8 }, "duration": 450, "say": "Na alegoria, quem aprende também retorna à caverna. O desafio não é só sair: é conversar com quem ainda vê apenas as sombras." },
|
|
124
|
+
{ "type": "arrow", "from": [484, 490], "to": [465, 478], "style": { "color": "#657489", "width": 2 }, "duration": 150 },
|
|
125
|
+
{ "type": "highlight", "from": [95, 600], "to": [806, 600], "thickness": 24, "duration": 300 },
|
|
126
|
+
{ "type": "text", "at": [450, 608], "text": "o que está por trás daquilo que eu vejo?", "anchor": "middle", "size": 38, "duration": 750, "say": "Leve essa pergunta para uma notícia, uma foto ou uma certeza sua: o que produz essa aparência? O que eu ainda não consigo ver?" }
|
|
127
|
+
]
|
|
128
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "estoicismo-onibus",
|
|
3
|
+
"title": "Estoicismo ↔ esperando o ônibus",
|
|
4
|
+
"category": "Filosofia",
|
|
5
|
+
"width": 900,
|
|
6
|
+
"height": 660,
|
|
7
|
+
"background": "plain",
|
|
8
|
+
"learning": {
|
|
9
|
+
"goal": "Separar aquilo que depende de nossa escolha daquilo que não está inteiramente sob nosso controle.",
|
|
10
|
+
"question": "Uma entrevista foi adiada sem aviso. O que você pode escolher fazer, sem fingir que o problema não importa?",
|
|
11
|
+
"answer": "Você pode pedir informações, explicar o impacto, reorganizar a agenda ou contestar o tratamento. Não pode garantir a resposta da outra pessoa. Agir é diferente de controlar o resultado.",
|
|
12
|
+
"caveat": "A cena parte do Manual de Epicteto, §1. A distinção estoica não manda reprimir emoções, aceitar injustiças ou abandonar a ação coletiva. Nossos recursos e condições também limitam as ações possíveis."
|
|
13
|
+
},
|
|
14
|
+
"steps": [
|
|
15
|
+
{ "type": "text", "chapter": "O imprevisto", "at": [40, 59], "text": "o ônibus atrasou. e agora?", "size": 44, "duration": 800, "say": "Você saiu no horário, mas o ônibus não chegou. O atraso é real. A irritação também. Vamos olhar para a situação." },
|
|
16
|
+
{ "type": "polygon", "points": [[45, 431], [853, 431], [853, 493], [45, 493]], "style": { "color": "#D2CEC5", "fill": "#E6E2D9", "fillStyle": "solid", "width": 1 }, "duration": 100 },
|
|
17
|
+
{ "type": "line", "from": [45, 444], "to": [853, 444], "style": { "color": "#B1AA9D", "width": 2 }, "duration": 100 },
|
|
18
|
+
{ "type": "line", "from": [450, 475], "to": [830, 475], "style": { "color": "#B1AA9D", "width": 2, "dashed": true }, "duration": 100 },
|
|
19
|
+
{ "type": "polygon", "points": [[60, 262], [333, 262], [355, 280], [48, 280]], "style": { "color": "#647581", "fill": "#91A3A9", "fillStyle": "solid", "width": 1.8 }, "duration": 150 },
|
|
20
|
+
{ "type": "line", "from": [72, 280], "to": [72, 429], "style": { "color": "#647581", "width": 5 }, "duration": 110 },
|
|
21
|
+
{ "type": "line", "from": [329, 280], "to": [329, 429], "style": { "color": "#647581", "width": 5 }, "duration": 110 },
|
|
22
|
+
{ "type": "polygon", "points": [[87, 293], [190, 293], [190, 366], [87, 366]], "style": { "color": "#C1BEB4", "fill": "#ECE9DE", "fillStyle": "solid", "width": 1.3 }, "duration": 100 },
|
|
23
|
+
{ "type": "polyline", "points": [[100, 350], [115, 325], [145, 337], [177, 309]], "style": { "color": "#7D9187", "width": 3 }, "duration": 150 },
|
|
24
|
+
{ "type": "circle", "center": [100, 350], "r": 3, "style": { "color": "#607267", "fill": "#607267", "fillStyle": "solid", "width": 1 }, "duration": 60 },
|
|
25
|
+
{ "type": "circle", "center": [177, 309], "r": 3, "style": { "color": "#607267", "fill": "#607267", "fillStyle": "solid", "width": 1 }, "duration": 60 },
|
|
26
|
+
{ "type": "polygon", "points": [[94, 390], [185, 390], [194, 401], [87, 401]], "style": { "color": "#927C61", "fill": "#B99F7A", "fillStyle": "solid", "width": 1.4 }, "duration": 110 },
|
|
27
|
+
{ "type": "line", "from": [104, 401], "to": [104, 427], "style": { "color": "#647581", "width": 4 }, "duration": 80 },
|
|
28
|
+
{ "type": "line", "from": [177, 401], "to": [177, 427], "style": { "color": "#647581", "width": 4 }, "duration": 80 },
|
|
29
|
+
{ "type": "line", "from": [53, 241], "to": [53, 428], "style": { "color": "#647581", "width": 4 }, "duration": 110 },
|
|
30
|
+
{ "type": "circle", "center": [53, 221], "r": 20, "style": { "color": "#647581", "fill": "#DCE7E5", "fillStyle": "solid", "width": 2 }, "duration": 120 },
|
|
31
|
+
{ "type": "polygon", "points": [[43, 210], [63, 210], [63, 228], [43, 228]], "style": { "color": "#647581", "width": 1.7, "roughness": 0.6 }, "duration": 100 },
|
|
32
|
+
{ "type": "line", "from": [45, 218], "to": [61, 218], "style": { "color": "#647581", "width": 1.4 }, "duration": 60 },
|
|
33
|
+
{ "type": "circle", "center": [46, 231], "r": 2, "style": { "color": "#647581", "fill": "#647581", "fillStyle": "solid" }, "duration": 60 },
|
|
34
|
+
{ "type": "circle", "center": [60, 231], "r": 2, "style": { "color": "#647581", "fill": "#647581", "fillStyle": "solid" }, "duration": 60 },
|
|
35
|
+
{ "type": "ellipse", "center": [252, 428], "rx": 32, "ry": 6, "style": { "color": "#C8C0B0", "fill": "#C8C0B0", "fillStyle": "solid", "width": 1 }, "duration": 70 },
|
|
36
|
+
{ "type": "polygon", "points": [[240, 344], [263, 344], [273, 386], [237, 386]], "style": { "color": "#4D5663", "fill": "#A8AF95", "fillStyle": "solid", "width": 1.5 }, "duration": 120 },
|
|
37
|
+
{ "type": "circle", "center": [252, 326], "r": 14, "style": { "color": "#4D5663", "fill": "#DBBB9D", "fillStyle": "solid", "roughness": 0.7, "width": 1.5 }, "duration": 100 },
|
|
38
|
+
{ "type": "curve", "points": [[239, 322], [243, 312], [257, 312], [265, 322]], "style": { "color": "#4D5663", "width": 4 }, "duration": 90 },
|
|
39
|
+
{ "type": "polyline", "points": [[246, 386], [243, 411], [234, 426]], "style": { "color": "#4D5663", "width": 7 }, "duration": 100 },
|
|
40
|
+
{ "type": "polyline", "points": [[262, 386], [264, 412], [275, 426]], "style": { "color": "#4D5663", "width": 7 }, "duration": 100 },
|
|
41
|
+
{ "type": "polyline", "points": [[240, 351], [227, 370], [237, 379]], "style": { "color": "#4D5663", "width": 5 }, "duration": 100 },
|
|
42
|
+
{ "type": "polyline", "points": [[265, 352], [281, 366], [289, 353]], "style": { "color": "#4D5663", "width": 5 }, "duration": 100 },
|
|
43
|
+
{ "type": "circle", "center": [300, 305], "r": 20, "style": { "color": "#8D8D82", "fill": "#FBF7EE", "fillStyle": "solid", "width": 1.6 }, "duration": 130, "say": "Você olha o relógio. Esperar mais um pouco já tem um custo: alguém está esperando por você." },
|
|
44
|
+
{ "type": "polyline", "points": [[300, 292], [300, 305], [310, 311]], "style": { "color": "#647581", "width": 2 }, "duration": 100 },
|
|
45
|
+
{ "type": "text", "at": [203, 483], "text": "o atraso e a irritação são reais.", "anchor": "middle", "size": 25, "duration": 450 },
|
|
46
|
+
|
|
47
|
+
{ "type": "ellipse", "chapter": "O que não depende só de mim", "center": [613, 170], "rx": 48, "ry": 22, "style": { "color": "#9BA6AC", "fill": "#DEE2E2", "fillStyle": "solid", "width": 1.2 }, "duration": 120, "say": "O tempo, o trânsito e a decisão de outras pessoas não obedecem à sua vontade. Você pode tentar influenciar a situação, mas não garantir o resultado." },
|
|
48
|
+
{ "type": "ellipse", "center": [654, 153], "rx": 35, "ry": 30, "style": { "color": "#9BA6AC", "fill": "#DEE2E2", "fillStyle": "solid", "width": 1.2 }, "duration": 110 },
|
|
49
|
+
{ "type": "ellipse", "center": [692, 172], "rx": 41, "ry": 22, "style": { "color": "#9BA6AC", "fill": "#DEE2E2", "fillStyle": "solid", "width": 1.2 }, "duration": 110 },
|
|
50
|
+
{ "type": "line", "from": [593, 207], "to": [585, 224], "style": { "color": "#9BA6AC", "width": 2 }, "duration": 70 },
|
|
51
|
+
{ "type": "line", "from": [626, 212], "to": [618, 229], "style": { "color": "#9BA6AC", "width": 2 }, "duration": 70 },
|
|
52
|
+
{ "type": "line", "from": [661, 207], "to": [653, 224], "style": { "color": "#9BA6AC", "width": 2 }, "duration": 70 },
|
|
53
|
+
{ "type": "line", "from": [696, 212], "to": [688, 229], "style": { "color": "#9BA6AC", "width": 2 }, "duration": 70 },
|
|
54
|
+
{ "type": "line", "from": [722, 203], "to": [714, 220], "style": { "color": "#9BA6AC", "width": 2 }, "duration": 70 },
|
|
55
|
+
{ "type": "ellipse", "center": [676, 439], "rx": 151, "ry": 11, "style": { "color": "#C5BFB2", "fill": "#C5BFB2", "fillStyle": "solid", "width": 1 }, "duration": 100 },
|
|
56
|
+
{ "type": "polygon", "points": [[531, 329], [543, 285], [786, 285], [816, 319], [816, 418], [531, 418]], "style": { "color": "#73858A", "fill": "#A8B9B8", "fillStyle": "solid", "width": 2 }, "duration": 200 },
|
|
57
|
+
{ "type": "polygon", "points": [[547, 301], [593, 301], [593, 348], [538, 348]], "style": { "color": "#73858A", "fill": "#E7E9DE", "fillStyle": "solid", "width": 1.3 }, "duration": 100 },
|
|
58
|
+
{ "type": "polygon", "points": [[605, 301], [655, 301], [655, 348], [605, 348]], "style": { "color": "#73858A", "fill": "#E7E9DE", "fillStyle": "solid", "width": 1.3 }, "duration": 100 },
|
|
59
|
+
{ "type": "polygon", "points": [[668, 301], [718, 301], [718, 348], [668, 348]], "style": { "color": "#73858A", "fill": "#E7E9DE", "fillStyle": "solid", "width": 1.3 }, "duration": 100 },
|
|
60
|
+
{ "type": "polygon", "points": [[731, 302], [778, 302], [797, 323], [797, 392], [731, 392]], "style": { "color": "#73858A", "fill": "#DCE3DC", "fillStyle": "solid", "width": 1.3 }, "duration": 130 },
|
|
61
|
+
{ "type": "line", "from": [763, 306], "to": [763, 391], "style": { "color": "#73858A", "width": 1.5 }, "duration": 90 },
|
|
62
|
+
{ "type": "line", "from": [538, 367], "to": [724, 367], "style": { "color": "#E5E5D3", "width": 9 }, "duration": 100 },
|
|
63
|
+
{ "type": "circle", "center": [580, 420], "r": 21, "style": { "color": "#4D5663", "fill": "#4D5663", "fillStyle": "solid", "width": 1.4 }, "duration": 110 },
|
|
64
|
+
{ "type": "circle", "center": [580, 420], "r": 10, "style": { "color": "#B2B4AB", "fill": "#B2B4AB", "fillStyle": "solid", "width": 1 }, "duration": 80 },
|
|
65
|
+
{ "type": "circle", "center": [765, 420], "r": 21, "style": { "color": "#4D5663", "fill": "#4D5663", "fillStyle": "solid", "width": 1.4 }, "duration": 110 },
|
|
66
|
+
{ "type": "circle", "center": [765, 420], "r": 10, "style": { "color": "#B2B4AB", "fill": "#B2B4AB", "fillStyle": "solid", "width": 1 }, "duration": 80 },
|
|
67
|
+
{ "type": "text", "at": [668, 469], "text": "não controlo a chegada.", "anchor": "middle", "size": 22, "duration": 400, "style": { "color": "#5E5A52" } },
|
|
68
|
+
|
|
69
|
+
{ "type": "polygon", "chapter": "Uma ação possível", "points": [[286, 333], [306, 331], [310, 359], [289, 362]], "style": { "color": "#46638B", "fill": "#6C8AAC", "fillStyle": "solid", "width": 1.4 }, "duration": 130, "say": "O celular está na sua mão. Uma ação possível é avisar do atraso. Outra é consultar uma rota alternativa ou cobrar informação sobre o serviço." },
|
|
70
|
+
{ "type": "polygon", "points": [[290, 337], [302, 336], [305, 353], [292, 355]], "style": { "color": "#C9DFD8", "fill": "#DDEDE3", "fillStyle": "solid", "width": 1 }, "duration": 100 },
|
|
71
|
+
{ "type": "line", "from": [294, 342], "to": [301, 341], "style": { "color": "#46638B", "width": 1.3 }, "duration": 80 },
|
|
72
|
+
{ "type": "line", "from": [294, 347], "to": [302, 346], "style": { "color": "#46638B", "width": 1.3 }, "duration": 80 },
|
|
73
|
+
{ "type": "highlight", "from": [206, 536], "to": [692, 536], "thickness": 19, "duration": 200 },
|
|
74
|
+
{ "type": "text", "at": [450, 544], "text": "posso avisar, buscar uma rota, pedir informação.", "anchor": "middle", "size": 31, "duration": 600 },
|
|
75
|
+
{ "type": "highlight", "chapter": "Agir sem controlar tudo", "from": [91, 603], "to": [811, 603], "thickness": 24, "duration": 250 },
|
|
76
|
+
{ "type": "text", "at": [450, 611], "text": "agir com cuidado não é mandar no resultado.", "anchor": "middle", "size": 36, "duration": 700, "say": "Epicteto não pede que você finja que não sente nada. A distinção ajuda a escolher como agir, sem prometer controle sobre tudo. Você ainda pode reclamar e cobrar melhorias." }
|
|
77
|
+
]
|
|
78
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "arquitetura-fila",
|
|
3
|
+
"title": "Filas ↔ uma manhã na cafeteria",
|
|
4
|
+
"category": "Sistemas",
|
|
5
|
+
"width": 900,
|
|
6
|
+
"height": 660,
|
|
7
|
+
"background": "plain",
|
|
8
|
+
"params": {
|
|
9
|
+
"chegadas": { "label": "pedidos que chegam por minuto", "min": 1, "max": 8, "step": 1, "value": 6 },
|
|
10
|
+
"capacidade": { "label": "pedidos atendidos por minuto", "min": 1, "max": 8, "step": 1, "value": 3 }
|
|
11
|
+
},
|
|
12
|
+
"vars": {
|
|
13
|
+
"saldo": "chegadas - capacidade",
|
|
14
|
+
"acumulo": "max(0, saldo)",
|
|
15
|
+
"t0": "min(1, max(0, acumulo))",
|
|
16
|
+
"t1": "min(1, max(0, acumulo - 1))",
|
|
17
|
+
"t2": "min(1, max(0, acumulo - 2))",
|
|
18
|
+
"t3": "min(1, max(0, acumulo - 3))",
|
|
19
|
+
"t4": "min(1, max(0, acumulo - 4))",
|
|
20
|
+
"t5": "min(1, max(0, acumulo - 5))",
|
|
21
|
+
"t6": "min(1, max(0, acumulo - 6))"
|
|
22
|
+
},
|
|
23
|
+
"learning": {
|
|
24
|
+
"goal": "Entender que uma fila desacopla chegada e processamento, mas não cria capacidade.",
|
|
25
|
+
"question": "Se um consumidor concluir uma tarefa, mas falhar antes de confirmar a mensagem, o que pode acontecer?",
|
|
26
|
+
"answer": "Em uma fila com entrega pelo menos uma vez, a mensagem pode reaparecer. O consumidor precisa tolerar repetição, por exemplo registrando uma chave da operação e evitando aplicar o mesmo efeito duas vezes.",
|
|
27
|
+
"caveat": "Cada comanda pendurada representa um pedido ainda esperando após um minuto: o desenho mostra um saldo simplificado, não uma simulação em tempo real. Ele assume taxas constantes, fila inicialmente vazia e ausência de falhas. O exemplo adota entrega pelo menos uma vez; ordenação e novas tentativas variam por tecnologia. Receber um protocolo não significa concluir o trabalho."
|
|
28
|
+
},
|
|
29
|
+
"steps": [
|
|
30
|
+
{ "type": "text", "chapter": "O pedido chega ao caixa", "at": [40, 59], "text": "pedir um café não é o mesmo que preparar um café.", "size": 39, "duration": 850, "say": "Numa manhã cheia, o caixa anota pedidos enquanto o barista prepara os cafés. Uma coisa não precisa esperar a outra terminar." },
|
|
31
|
+
{ "type": "line", "from": [46, 448], "to": [852, 448], "style": { "color": "#C6BAA5", "width": 2 }, "duration": 100 },
|
|
32
|
+
{ "type": "polygon", "points": [[52, 415], [840, 415], [840, 439], [52, 439]], "style": { "color": "#AA9270", "fill": "#CBB58F", "fillStyle": "solid", "width": 1.6 }, "duration": 130 },
|
|
33
|
+
{ "type": "polygon", "points": [[45, 400], [837, 400], [852, 414], [52, 420]], "style": { "color": "#AA9270", "fill": "#E2D0AC", "fillStyle": "solid", "width": 1.5 }, "duration": 130 },
|
|
34
|
+
{ "type": "line", "from": [174, 421], "to": [174, 437], "style": { "color": "#B29A77", "width": 1.2 }, "duration": 70 },
|
|
35
|
+
{ "type": "line", "from": [352, 421], "to": [352, 437], "style": { "color": "#B29A77", "width": 1.2 }, "duration": 70 },
|
|
36
|
+
{ "type": "line", "from": [530, 421], "to": [530, 437], "style": { "color": "#B29A77", "width": 1.2 }, "duration": 70 },
|
|
37
|
+
{ "type": "line", "from": [708, 421], "to": [708, 437], "style": { "color": "#B29A77", "width": 1.2 }, "duration": 70 },
|
|
38
|
+
{ "type": "polygon", "points": [[122, 337], [148, 337], [160, 394], [111, 394]], "style": { "color": "#59616D", "fill": "#94A89E", "fillStyle": "solid", "width": 1.5 }, "duration": 120 },
|
|
39
|
+
{ "type": "circle", "center": [135, 318], "r": 14, "style": { "color": "#59616D", "fill": "#D8B99B", "fillStyle": "solid", "roughness": 0.7, "width": 1.5 }, "duration": 100 },
|
|
40
|
+
{ "type": "curve", "points": [[123, 314], [126, 303], [140, 303], [148, 313]], "style": { "color": "#59616D", "width": 4 }, "duration": 90 },
|
|
41
|
+
{ "type": "polygon", "points": [[124, 357], [146, 357], [152, 391], [117, 391]], "style": { "color": "#748577", "fill": "#D1DAC2", "fillStyle": "solid", "width": 1.1 }, "duration": 100 },
|
|
42
|
+
{ "type": "polyline", "points": [[147, 344], [166, 363], [186, 351]], "style": { "color": "#59616D", "width": 5 }, "duration": 110 },
|
|
43
|
+
{ "type": "polygon", "points": [[180, 375], [239, 375], [252, 398], [173, 398]], "style": { "color": "#667B7C", "fill": "#99B0AC", "fillStyle": "solid", "width": 1.5 }, "duration": 120 },
|
|
44
|
+
{ "type": "polygon", "points": [[190, 313], [236, 313], [241, 349], [194, 349]], "style": { "color": "#667B7C", "fill": "#99B0AC", "fillStyle": "solid", "width": 1.5 }, "duration": 120 },
|
|
45
|
+
{ "type": "polygon", "points": [[197, 320], [230, 320], [234, 342], [200, 342]], "style": { "color": "#667B7C", "fill": "#E2EBDA", "fillStyle": "solid", "width": 1 }, "duration": 100 },
|
|
46
|
+
{ "type": "line", "from": [210, 351], "to": [210, 376], "style": { "color": "#667B7C", "width": 5 }, "duration": 80 },
|
|
47
|
+
{ "type": "line", "from": [205, 329], "to": [225, 329], "style": { "color": "#8DA08A", "width": 2 }, "duration": 80 },
|
|
48
|
+
{ "type": "line", "from": [205, 335], "to": [218, 335], "style": { "color": "#8DA08A", "width": 1.5 }, "duration": 80 },
|
|
49
|
+
{ "type": "line", "from": [185, 385], "to": [235, 385], "style": { "color": "#6B8580", "width": 2, "dashed": true }, "duration": 100 },
|
|
50
|
+
{ "type": "text", "at": [154, 475], "text": "caixa: recebe o pedido", "anchor": "middle", "size": 24, "duration": 350, "style": { "color": "#46638B" } },
|
|
51
|
+
|
|
52
|
+
{ "type": "arrow", "chapter": "As comandas esperam", "from": [245, 306], "to": [292, 256], "style": { "color": "#46638B", "width": 2.2 }, "duration": 300, "say": "O caixa é o produtor. Ele envia o trabalho para uma fila. Aqui, cada comanda pendurada será um pedido ainda esperando após um minuto." },
|
|
53
|
+
{ "type": "text", "at": [462, 190], "text": "comandas pendentes", "anchor": "middle", "size": 27, "duration": 350 },
|
|
54
|
+
{ "type": "polygon", "points": [[295, 211], [628, 211], [628, 223], [295, 223]], "style": { "color": "#9F8B65", "fill": "#BEA77E", "fillStyle": "solid", "width": 1.4 }, "duration": 110 },
|
|
55
|
+
|
|
56
|
+
{ "type": "polygon", "id": "comanda-1", "points": [[310, 223], [342, 223], [342, "223 + 60*t0"], [326, "223 + 54*t0"], [310, "223 + 60*t0"]], "style": { "color": "#9F8B65", "fill": "#FFF4D8", "fillStyle": "solid", "width": 1.2, "roughness": 0.4 }, "duration": 100 },
|
|
57
|
+
{ "type": "line", "from": [316, "223 + 14*t0"], "to": [336, "223 + 14*t0"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
58
|
+
{ "type": "line", "from": [316, "223 + 24*t0"], "to": [332, "223 + 24*t0"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
59
|
+
{ "type": "polygon", "id": "comanda-2", "points": [[354, 223], [386, 223], [386, "223 + 60*t1"], [370, "223 + 54*t1"], [354, "223 + 60*t1"]], "style": { "color": "#9F8B65", "fill": "#FFF4D8", "fillStyle": "solid", "width": 1.2, "roughness": 0.4 }, "duration": 100 },
|
|
60
|
+
{ "type": "line", "from": [360, "223 + 14*t1"], "to": [380, "223 + 14*t1"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
61
|
+
{ "type": "line", "from": [360, "223 + 24*t1"], "to": [376, "223 + 24*t1"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
62
|
+
{ "type": "polygon", "id": "comanda-3", "points": [[398, 223], [430, 223], [430, "223 + 60*t2"], [414, "223 + 54*t2"], [398, "223 + 60*t2"]], "style": { "color": "#9F8B65", "fill": "#FFF4D8", "fillStyle": "solid", "width": 1.2, "roughness": 0.4 }, "duration": 100 },
|
|
63
|
+
{ "type": "line", "from": [404, "223 + 14*t2"], "to": [424, "223 + 14*t2"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
64
|
+
{ "type": "line", "from": [404, "223 + 24*t2"], "to": [420, "223 + 24*t2"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
65
|
+
{ "type": "polygon", "id": "comanda-4", "points": [[442, 223], [474, 223], [474, "223 + 60*t3"], [458, "223 + 54*t3"], [442, "223 + 60*t3"]], "style": { "color": "#9F8B65", "fill": "#FFF4D8", "fillStyle": "solid", "width": 1.2, "roughness": 0.4 }, "duration": 100 },
|
|
66
|
+
{ "type": "line", "from": [448, "223 + 14*t3"], "to": [468, "223 + 14*t3"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
67
|
+
{ "type": "line", "from": [448, "223 + 24*t3"], "to": [464, "223 + 24*t3"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
68
|
+
{ "type": "polygon", "id": "comanda-5", "points": [[486, 223], [518, 223], [518, "223 + 60*t4"], [502, "223 + 54*t4"], [486, "223 + 60*t4"]], "style": { "color": "#9F8B65", "fill": "#FFF4D8", "fillStyle": "solid", "width": 1.2, "roughness": 0.4 }, "duration": 100 },
|
|
69
|
+
{ "type": "line", "from": [492, "223 + 14*t4"], "to": [512, "223 + 14*t4"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
70
|
+
{ "type": "line", "from": [492, "223 + 24*t4"], "to": [508, "223 + 24*t4"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
71
|
+
{ "type": "polygon", "id": "comanda-6", "points": [[530, 223], [562, 223], [562, "223 + 60*t5"], [546, "223 + 54*t5"], [530, "223 + 60*t5"]], "style": { "color": "#9F8B65", "fill": "#FFF4D8", "fillStyle": "solid", "width": 1.2, "roughness": 0.4 }, "duration": 100 },
|
|
72
|
+
{ "type": "line", "from": [536, "223 + 14*t5"], "to": [556, "223 + 14*t5"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
73
|
+
{ "type": "line", "from": [536, "223 + 24*t5"], "to": [552, "223 + 24*t5"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
74
|
+
{ "type": "polygon", "id": "comanda-7", "points": [[574, 223], [606, 223], [606, "223 + 60*t6"], [590, "223 + 54*t6"], [574, "223 + 60*t6"]], "style": { "color": "#9F8B65", "fill": "#FFF4D8", "fillStyle": "solid", "width": 1.2, "roughness": 0.4 }, "duration": 100 },
|
|
75
|
+
{ "type": "line", "from": [580, "223 + 14*t6"], "to": [600, "223 + 14*t6"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
76
|
+
{ "type": "line", "from": [580, "223 + 24*t6"], "to": [596, "223 + 24*t6"], "style": { "color": "#9F8B65", "width": 1.2, "roughness": 0.4 }, "duration": 60 },
|
|
77
|
+
|
|
78
|
+
{ "type": "arrow", "chapter": "O preparo tem um ritmo", "from": [633, 256], "to": [684, 306], "style": { "color": "#617C61", "width": 2.2 }, "duration": 300, "say": "O barista é o consumidor. Ele pega uma comanda, prepara o café e confirma o trabalho. A fila separa o ritmo de chegada do ritmo de preparo." },
|
|
79
|
+
{ "type": "polygon", "points": [[649, 337], [675, 337], [688, 394], [639, 394]], "style": { "color": "#59616D", "fill": "#A7AA8C", "fillStyle": "solid", "width": 1.5 }, "duration": 120 },
|
|
80
|
+
{ "type": "circle", "center": [662, 318], "r": 14, "style": { "color": "#59616D", "fill": "#D8B99B", "fillStyle": "solid", "roughness": 0.7, "width": 1.5 }, "duration": 100 },
|
|
81
|
+
{ "type": "curve", "points": [[650, 314], [653, 303], [667, 303], [675, 313]], "style": { "color": "#59616D", "width": 4 }, "duration": 90 },
|
|
82
|
+
{ "type": "polygon", "points": [[652, 356], [675, 356], [680, 391], [645, 391]], "style": { "color": "#748577", "fill": "#D1DAC2", "fillStyle": "solid", "width": 1.1 }, "duration": 100 },
|
|
83
|
+
{ "type": "polyline", "points": [[675, 344], [701, 366], [725, 355]], "style": { "color": "#59616D", "width": 5 }, "duration": 110 },
|
|
84
|
+
{ "type": "polygon", "points": [[728, 299], [815, 299], [831, 314], [831, 393], [728, 393]], "style": { "color": "#647B7A", "fill": "#9EAFAB", "fillStyle": "solid", "width": 1.6 }, "duration": 140 },
|
|
85
|
+
{ "type": "polygon", "points": [[728, 293], [815, 293], [831, 307], [742, 307]], "style": { "color": "#647B7A", "fill": "#C5CEBD", "fillStyle": "solid", "width": 1.3 }, "duration": 110 },
|
|
86
|
+
{ "type": "polygon", "points": [[738, 337], [820, 337], [820, 383], [738, 383]], "style": { "color": "#647B7A", "fill": "#E1E4D4", "fillStyle": "solid", "width": 1.2 }, "duration": 110 },
|
|
87
|
+
{ "type": "circle", "center": [751, 320], "r": 5, "style": { "color": "#647B7A", "fill": "#E1E4D4", "fillStyle": "solid", "width": 1.2 }, "duration": 70 },
|
|
88
|
+
{ "type": "circle", "center": [772, 320], "r": 5, "style": { "color": "#647B7A", "fill": "#E1E4D4", "fillStyle": "solid", "width": 1.2 }, "duration": 70 },
|
|
89
|
+
{ "type": "line", "from": [769, 338], "to": [769, 352], "style": { "color": "#647B7A", "width": 4 }, "duration": 80 },
|
|
90
|
+
{ "type": "line", "from": [754, 346], "to": [777, 346], "style": { "color": "#647B7A", "width": 4 }, "duration": 80 },
|
|
91
|
+
{ "type": "polygon", "points": [[756, 360], [784, 360], [781, 379], [761, 379]], "style": { "color": "#9F8B65", "fill": "#FAF2DF", "fillStyle": "solid", "width": 1.3 }, "duration": 110 },
|
|
92
|
+
{ "type": "curve", "points": [[784, 364], [791, 365], [790, 371], [783, 374]], "style": { "color": "#9F8B65", "width": 1.8 }, "duration": 100 },
|
|
93
|
+
{ "type": "line", "from": [741, 388], "to": [818, 388], "style": { "color": "#647B7A", "width": 2, "dashed": true }, "duration": 90 },
|
|
94
|
+
{ "type": "curve", "points": [[796, 282], [791, 269], [796, 257]], "style": { "color": "#A1A89A", "width": 1.6 }, "duration": 110 },
|
|
95
|
+
{ "type": "curve", "points": [[811, 281], [816, 267], [811, 254]], "style": { "color": "#A1A89A", "width": 1.6 }, "duration": 110 },
|
|
96
|
+
{ "type": "text", "at": [740, 475], "text": "barista: faz e confirma", "anchor": "middle", "size": 24, "duration": 350, "style": { "color": "#617C61" } },
|
|
97
|
+
{ "type": "text", "at": [450, 520], "text": "chegam {chegadas}/min · capacidade: {capacidade}/min", "anchor": "middle", "size": 30, "duration": 450, "say": "Mexa nos valores abaixo. Mais pedidos que capacidade? Sobram comandas penduradas. Com capacidade suficiente, o saldo pendente fica em zero." },
|
|
98
|
+
{ "type": "text", "at": [450, 561], "text": "após 1 min: {acumulo} pedido(s) ainda esperando", "anchor": "middle", "size": 28, "duration": 450 },
|
|
99
|
+
{ "type": "highlight", "chapter": "A fila não prepara café", "from": [65, 611], "to": [800, 611], "thickness": 24, "duration": 250 },
|
|
100
|
+
{ "type": "text", "at": [450, 619], "text": "a fila absorve picos. ela não prepara mais café.", "anchor": "middle", "size": 35, "duration": 700, "say": "Uma fila compra tempo para absorver um pico, mas não resolve sobrecarga contínua. E, se uma comanda for entregue de novo após uma falha, o sistema precisa evitar cobrar ou preparar o mesmo pedido duas vezes." }
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "juros-fatura",
|
|
3
|
+
"title": "Juros compostos ↔ a fatura",
|
|
4
|
+
"category": "Matemática",
|
|
5
|
+
"width": 900,
|
|
6
|
+
"height": 560,
|
|
7
|
+
"background": "grid",
|
|
8
|
+
"params": {
|
|
9
|
+
"taxa": { "label": "juros do rotativo (% ao mês)", "min": 1, "max": 15, "step": 1, "value": 12 }
|
|
10
|
+
},
|
|
11
|
+
"vars": {
|
|
12
|
+
"r": "taxa / 100",
|
|
13
|
+
"bx": 90,
|
|
14
|
+
"by": 130,
|
|
15
|
+
"bw": 720,
|
|
16
|
+
"bh": 340,
|
|
17
|
+
"ymax": 6000,
|
|
18
|
+
"final": "1000 * (1 + r)^12",
|
|
19
|
+
"simples": "1000 * (1 + r*12)",
|
|
20
|
+
"ex": "bx + bw",
|
|
21
|
+
"ey": "by + bh - min(final, ymax) / ymax * bh"
|
|
22
|
+
},
|
|
23
|
+
"steps": [
|
|
24
|
+
{ "type": "text", "at": [40, 72], "text": "por que a dívida do rotativo dispara?", "size": 42,
|
|
25
|
+
"say": "Você deixou R$ 1.000 no rotativo do cartão. O que acontece em um ano?" },
|
|
26
|
+
|
|
27
|
+
{ "type": "polyline", "points": [["bx", "by - 10"], ["bx", "by + bh"], ["bx + bw + 10", "by + bh"]],
|
|
28
|
+
"style": { "width": 2.4 } },
|
|
29
|
+
{ "type": "text", "at": ["bx + bw", "by + bh + 38"], "text": "meses →", "anchor": "end", "size": 26, "style": { "color": "#5E5A52" } },
|
|
30
|
+
{ "type": "text", "at": ["bx - 10", "by - 18"], "text": "R$", "anchor": "middle", "size": 26, "style": { "color": "#5E5A52" } },
|
|
31
|
+
|
|
32
|
+
{ "type": "plot", "fn": "1000 * (1 + r*x)", "domain": [0, 12], "range": [0, "ymax"],
|
|
33
|
+
"box": { "x": "bx", "y": "by", "w": "bw", "h": "bh" },
|
|
34
|
+
"style": { "color": "#8C8578", "width": 2.4, "dashed": true },
|
|
35
|
+
"say": "Se os juros fossem simples, a dívida subiria em linha reta." },
|
|
36
|
+
{ "type": "text", "at": ["ex - 8", "min(by + bh - min(simples, ymax)/ymax*bh + 62, by + bh - 8)"], "text": "simples: R$ {simples:0}", "anchor": "end",
|
|
37
|
+
"size": 26, "style": { "color": "#5E5A52" } },
|
|
38
|
+
|
|
39
|
+
{ "type": "pause", "ms": 400 },
|
|
40
|
+
|
|
41
|
+
{ "type": "plot", "fn": "1000 * (1 + r)^x", "domain": [0, 12], "range": [0, "ymax"],
|
|
42
|
+
"box": { "x": "bx", "y": "by", "w": "bw", "h": "bh" },
|
|
43
|
+
"style": { "color": "#C8442C", "width": 3.4 },
|
|
44
|
+
"say": "Mas no rotativo o juro cobra juro do juro. A curva entorta para cima." },
|
|
45
|
+
|
|
46
|
+
{ "type": "arrow", "from": ["ex - 230", "ey - 48"], "to": ["ex - 10", "ey - 6"], "style": { "width": 2.4 } },
|
|
47
|
+
{ "type": "text", "at": ["ex - 240", "ey - 56"], "text": "12 meses: R$ {final:0}", "anchor": "end", "size": 36,
|
|
48
|
+
"style": { "color": "#C8442C" },
|
|
49
|
+
"say": "Em doze meses, os mil reais viram isso. Mexa na taxa e veja a curva mudar." }
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "pitagoras-telhado",
|
|
3
|
+
"title": "Pitágoras ↔ o telhado",
|
|
4
|
+
"category": "Matemática",
|
|
5
|
+
"width": 900,
|
|
6
|
+
"height": 560,
|
|
7
|
+
"background": "dots",
|
|
8
|
+
"params": {
|
|
9
|
+
"a": { "label": "altura do topo (m)", "min": 1, "max": 6, "step": 1, "value": 3 },
|
|
10
|
+
"b": { "label": "meia largura da casa (m)", "min": 1, "max": 8, "step": 1, "value": 4 }
|
|
11
|
+
},
|
|
12
|
+
"vars": {
|
|
13
|
+
"k": 45,
|
|
14
|
+
"x0": 450,
|
|
15
|
+
"y0": 470,
|
|
16
|
+
"xl": "x0 - b*k",
|
|
17
|
+
"xb": "x0 + b*k",
|
|
18
|
+
"ya": "y0 - a*k",
|
|
19
|
+
"c": "sqrt(a^2 + b^2)"
|
|
20
|
+
},
|
|
21
|
+
"steps": [
|
|
22
|
+
{ "type": "text", "at": [40, 72], "text": "por que a telha tem esse comprimento?", "size": 42,
|
|
23
|
+
"say": "Um telhado visto de frente. Quanto mede a telha, do topo até a beirada?" },
|
|
24
|
+
|
|
25
|
+
{ "type": "polygon", "points": [["xl", "y0"], ["xb", "y0"], ["xb", "y0 + 52"], ["xl", "y0 + 52"]],
|
|
26
|
+
"style": { "color": "#8C8578", "width": 2, "fill": "#EDE5D6", "fillStyle": "hachure" },
|
|
27
|
+
"say": "Primeiro, a casa." },
|
|
28
|
+
|
|
29
|
+
{ "type": "polyline", "points": [["xl", "y0"], ["x0", "ya"], ["xb", "y0"]],
|
|
30
|
+
"style": { "width": 3 }, "say": "Depois, o telhado." },
|
|
31
|
+
|
|
32
|
+
{ "type": "pause", "ms": 400 },
|
|
33
|
+
|
|
34
|
+
{ "type": "line", "from": ["x0", "ya"], "to": ["x0", "y0"],
|
|
35
|
+
"style": { "color": "#C8442C", "width": 3, "dashed": true },
|
|
36
|
+
"say": "Agora a altura, do topo até a laje. Vamos chamar de a." },
|
|
37
|
+
{ "type": "text", "at": ["x0", "ya - 16"], "text": "a = {a} m", "anchor": "middle", "size": 32,
|
|
38
|
+
"style": { "color": "#C8442C" } },
|
|
39
|
+
|
|
40
|
+
{ "type": "line", "from": ["x0", "y0"], "to": ["xb", "y0"],
|
|
41
|
+
"style": { "color": "#2F5BEA", "width": 3.4 },
|
|
42
|
+
"say": "E metade da largura da casa. Essa é a b." },
|
|
43
|
+
{ "type": "text", "at": ["(x0 + xb)/2", "y0 + 80"], "text": "b = {b} m", "anchor": "middle", "size": 28,
|
|
44
|
+
"style": { "color": "#2F5BEA" } },
|
|
45
|
+
|
|
46
|
+
{ "type": "polyline", "points": [["x0", "y0 - 20"], ["x0 + 20", "y0 - 20"], ["x0 + 20", "y0"]],
|
|
47
|
+
"style": { "width": 2 } },
|
|
48
|
+
|
|
49
|
+
{ "type": "highlight", "from": ["x0", "ya"], "to": ["xb", "y0"], "thickness": 20,
|
|
50
|
+
"say": "Sobrou um triângulo retângulo. A telha é o lado maior dele." },
|
|
51
|
+
{ "type": "line", "from": ["x0", "ya"], "to": ["xb", "y0"], "style": { "width": 4 } },
|
|
52
|
+
{ "type": "text", "at": ["(x0 + xb)/2 + 18", "(ya + y0)/2 - 8"], "text": "telha = ?", "size": 34 },
|
|
53
|
+
|
|
54
|
+
{ "type": "pause", "ms": 500 },
|
|
55
|
+
|
|
56
|
+
{ "type": "text", "at": [620, 125], "text": "a² + b² = c²", "size": 50,
|
|
57
|
+
"say": "Pitágoras resolve: a ao quadrado mais b ao quadrado é igual a c ao quadrado." },
|
|
58
|
+
{ "type": "text", "at": [620, 168], "text": "{a}² + {b}² = {a^2 + b^2}", "size": 32, "style": { "color": "#5E5A52" } },
|
|
59
|
+
{ "type": "text", "at": [620, 222], "text": "telha ≈ {c:1} m", "size": 40,
|
|
60
|
+
"say": "Com só duas medidas, o pedreiro já sabe quanto cortar." },
|
|
61
|
+
{ "type": "ellipse", "center": [742, 214], "rx": 138, "ry": 34,
|
|
62
|
+
"style": { "color": "#C8442C", "width": 2.6, "roughness": 1.6 } }
|
|
63
|
+
]
|
|
64
|
+
}
|