From 11cd38f9dfefa95626acb80d24114d4830f21d08 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 04:01:51 +0000 Subject: [PATCH 1/7] =?UTF-8?q?=EC=8B=9C=EC=9E=91=20=E2=80=94=20=ED=8C=A8?= =?UTF-8?q?=ED=84=B4=20=EC=97=B0=EA=B5=AC=2085=ED=8C=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From fd7405d394908bc5510a2c5eb942ce1794a245ef Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 04:23:37 +0000 Subject: [PATCH 2/7] =?UTF-8?q?=ED=8C=A8=ED=84=B4=20=EC=97=B0=EA=B5=AC=208?= =?UTF-8?q?5=ED=8C=90:=20Tamsel=20=EC=B9=B4=EB=93=9C=EC=99=80=20=EC=8B=A4?= =?UTF-8?q?=EB=A3=A8=EC=97=A3=20=EB=84=A4=20=EC=95=88,=20=EB=B8=94?= =?UTF-8?q?=EB=A1=9D=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pattern-study/craft/01-figure/brief.md | 27 + .../craft/01-figure/silhouettes-85.png | Bin 0 -> 3043 bytes incoming/pattern-study/patterns/tamsel.js | 585 ++++++++++++++++++ 3 files changed, 612 insertions(+) create mode 100644 incoming/pattern-study/craft/01-figure/brief.md create mode 100644 incoming/pattern-study/craft/01-figure/silhouettes-85.png create mode 100644 incoming/pattern-study/patterns/tamsel.js diff --git a/incoming/pattern-study/craft/01-figure/brief.md b/incoming/pattern-study/craft/01-figure/brief.md new file mode 100644 index 00000000..8b413ac9 --- /dev/null +++ b/incoming/pattern-study/craft/01-figure/brief.md @@ -0,0 +1,27 @@ +slug: tamsel + +# Tamsel + +밤거리 가스등에 불을 붙이고 다니는 열네 살 견습 점등꾼이에요. 진열장 받침 위에 일하던 차림 그대로 서 있어요. + +- 성격: 당돌함, 장난기 +- 시그니처: 키보다 긴 놋쇠 점등 장대예요. 꼭대기가 갈고리로 굽고, 갈고리 끝에 불씨 바구니가 매달려 머리 위로 실루엣을 깨요. +- 재질: 광택 머리카락(짙은 자두색, 끊긴 광택 띠), 무광 울 코트(청록), 금속(놋쇠 장대와 갈고리). 부츠는 검푸른 광택 가죽이고 받침 아크릴과 같은 단을 써요. +- 광원: 키 라이트는 오른쪽 위에서 오는 따뜻한 빛이에요. 림은 왼쪽 가장자리의 차가운 하늘색 1px 예요. +- 비례: 3.4등신. 키 113줄에 머리 33줄이에요. +- 쉬는 동작: 숨(상반신 1px, 3.2초에 한 번)과 포니테일 끝이 한 박 늦게 1px 흔들리는 것. 깜빡임은 따로 돌아요. +- 강조색: 불씨의 호박색. 불씨 바구니와 눈동자에만 칠해요. +- 이름판: 없어요. 받침 옆띠가 5줄이라 7줄이 안 돼요. + +노브 넷이에요. + +- K1 림 젤: 0 하늘색, 1/4 자홍, 1/2 초록, 3/4 호박. 림 1px 과 그늘 쪽 반사 한 단을 같이 물들여요. +- K2 받침: 0 나무, 1 흰 대리석, 2 검은 아크릴에 금 테(기본), 3 가장자리가 빛나는 아크릴. +- K3 디테일 컷: 0.5 아래는 전신, 0.5 부터는 머리와 몸통을 정확히 2배로. +- K4 에디션: 0 기본 칠, 1/4 2P 색, 1/2 금속 한정판, 3/4 무도색 원형. + +닮으면 안 되는 캐릭터 셋과, 각각과 다른 점 둘이에요. + +- 장난감 영화의 도자기 양치기 인형: 보닛과 치마 드레스가 없고 작업 코트와 부츠를 입어요. 장대 끝이 양을 거는 갈고리가 아니라 불씨를 매다는 갈고리예요. +- 빗자루를 타는 견습 마녀 배달부(검은 단발에 큰 빨간 리본): 리본이 없고 머리는 자두색 포니테일이에요. 날지 않고 장대를 바닥에 짚고 서요. +- 지팡이를 든 엘프 마법사(흰 긴 머리, 뾰족한 귀): 머리가 짙은 자두색이고 귀가 둥글어요. 장대는 마법 도구가 아니라 일하는 도구라 끝에 보석 대신 불씨가 있어요. diff --git a/incoming/pattern-study/craft/01-figure/silhouettes-85.png b/incoming/pattern-study/craft/01-figure/silhouettes-85.png new file mode 100644 index 0000000000000000000000000000000000000000..c4424651e7f56ecb807c72733222f6cbd0e4fc9f GIT binary patch literal 3043 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 literal 0 HcmV?d00001 diff --git a/incoming/pattern-study/patterns/tamsel.js b/incoming/pattern-study/patterns/tamsel.js new file mode 100644 index 00000000..0f5aa2fb --- /dev/null +++ b/incoming/pattern-study/patterns/tamsel.js @@ -0,0 +1,585 @@ +// ===== Patternflow pattern ===== +// Title: Tamsel +// Family: pixel +// Idea: A hand-pixelled figure of Tamsel, a fourteen-year-old apprentice lamplighter, standing on a display stand that fills the panel: plum ponytail under a teal cap, long teal work coat, tall plum boots, one hand on her hip and the other on a brass lighting pole taller than she is, its hook hanging a little cage of flame over her head. She breathes, blinks, and now and then the case light runs across the gloss. +// Author: patternflow-lab +// Date: 2026-11-01 +// SPDX-License-Identifier: CC-BY-SA-4.0 +// Lineage: original, pattern round 85 +// Round: 85 +// =============================== +// @matrix 64x128 +// @knobs Gel=0..1, Stand=0..3, Detail=0..1, Edition=0..1 +// +// Knob 1: Gel. The colour of the rim light down her left edges and of the bounce it throws into the shadows next to it: sky blue at 0, magenta from 0.25, green from 0.5, amber from 0.75. +// Knob 2: Stand. What she stands on: a turned wood plinth at 0, white marble from 1, black acrylic with a gold rim from 2, and from 3 an acrylic disc lit from its edge. +// Knob 3: Detail. Below 0.5 the whole figure; from 0.5 her head and chest at exactly twice the size, the way a box shows a close-up. +// Knob 4: Edition. The paint: the standard colours below 0.25, the second-player colours from 0.25, a gold and silver limited plating from 0.5, and from 0.75 the unpainted grey prototype. +// Buttons: K1 tap sends the case light across her; K2 tap makes the brass on her hook wink. + +const W = 64, H = 128; +// Each part is a grid, one character per LED and "." where it is clear, drawn +// in ORDER. Materials run light to dark: skin a b c d, hair and boots h i j k, +// coat and cap p q r s, brass m n o. U V X N M are the stand, z the rim light, +// w the specular, f g the flame, e the whites of the eyes, x the pupils. +const PARTS = { + base: { x: 6, y: 110, rows: [ + "....................UUUUUUUUUUU....................", + ".........UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU.........", + ".....UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU.....", + "..UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU..", + ".UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU.", + "VUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV", + "VVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVV", + "VVVVVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVV", + "VVVVVVVVVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVV", + "VVVVVVVVVVVVVVVVVVVVUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVV", + "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", + "..VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV..", + ".....VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV.....", + ".........VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV.........", + "....................VVVVVVVVVVV....................", + ] }, + staff: { x: 54, y: 4, rows: [ + "...mmmmm..", + "..nnnnnmmm", + ".onnnoooom", + ".nnn....oo", + "onn......o", + "onm......o", + "onm......m", + "oom.....nm", + ".omm..oooo", + ".onm..gggg", + ".onm..gggg", + ".onmm.gggg", + ".onnm.gggg", + ".onnm.gggg", + ".onnm.gggg", + ".onnm.gggg", + ".onnm.gggg", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".onnm.....", + ".oonm.....", + "..oo......", + ] }, + hairback: { x: 3, y: 9, rows: [ + ".............iiii...............", + "...........kiiiiiiiiiiiii.......", + "..........kijjjjiiiiiiiiiii.....", + "..........kjjjjjjjjjjjjjiiii....", + ".........kjjjjjjjjjjjjjjjjiii...", + "........kjjjjjjjjjjjjjjjjjjiii..", + "........kjjjjjjjjjjjjjjjjjjjii..", + ".......kjjjjjjjjjjjjjjjjjjjjjii.", + ".......jjjjjjjjjjjjjjjjjjjjjjii.", + "......kjjjjjjjjjjjjjjjjjjjjjjji.", + ".....kjjjjjjjjjjjjjjjjjjjjjjjjii", + ".....kjjjjjjjjjjjjjjjjjjjjjjjjii", + "....kjjjjjjjjjjjjjjjjjjjjjjjjjji", + "...kkjjjjjjjjjjjjjjjjjjjjjjjjjji", + "...kkjjjjjjjjjjjjjjjjjjjjjjjjjji", + "..kkkjjjjjjjjjkjjjjjjjjjjjjjjjji", + "..kkkjjjjjjjjkkkjjjjjjjjjjjjjjji", + ".kkkkjjjjjjjkkkkjjjjjjjjjjjjjjji", + ".kkkkjjjjjjkkkkkkjjjjjjjjjjjjjj.", + ".kkkjjjjjjkkkkkkkkjjjjjjjjjjjji.", + ".kkkjjjjjj.kkkkkkkkjjjjjjjjjjji.", + ".kkkjjjjj...kkkkkkkkkjjjjjjjjk..", + ".kkkjjjji...kkkkkkkkkkkkkkkkkk..", + ".kkkjjjj.....kkkkkkkkkkkkkkkk...", + "kkkkjjji......kkkkkkkkkkkkkk....", + "kkkkjjj........kkkkkkkkkkkk.....", + "kkkkjji..........kkkkkkkk.......", + "kkkkkj..........................", + "kkkkki..........................", + ] }, + tailtip: { x: 3, y: 38, rows: [ + "kkkkk", + "kkkkk", + "kkkkk", + ".kkkk", + ".kkk.", + ".kkk.", + "..kk.", + "..kk.", + ] }, + armfar: { x: 38, y: 44, rows: [ + ".rppp.................", + "rrqqpp................", + "rrqqqpp...............", + "rrrqqqpp..............", + "rrrqqqqp..............", + ".rrrqqqpp.......aaaaa.", + ".rrrrqqqpp...ppcbbbbaa", + "..rrrrqqqpppqqpcbbbbba", + "...rrrqqqqqqqqpcbbbbba", + "....rrrqqqqqqqpccbbbba", + "....rrrrqqqqqqpccccccc", + ".....rrrrqqqqqrrccccc.", + "......rrrrqqrrr.......", + ".......rrrrrr.........", + "........rrr...........", + ] }, + legs: { x: 23, y: 80, rows: [ + "..iiiii.....kiiii................", + ".kjjjjii...kjjjjii...............", + "kkjjjjjii..kjjjjji...............", + "kkjjjjjji.kkkjjjjii..............", + "kkjjjjjji.kkkjjjjji..............", + "kkjjjjjji..kkjjjjji..............", + "kkjjjjjji..kkkjjjjii.............", + "kkjjjjjji..kkkjjjjji.............", + "kkjjjjjji...kkkjjjji.............", + "kkjjjjjji...kkkjjjjii............", + "kkjjjjjji....kkjjjjji............", + "kkjjjjjji....kkkjjjjii...........", + "kkjjjjjji....kkkjjjjji...........", + "kkjjjjjji.....kkjjjjji...........", + "kkjjjjjji.....kkkjjjjii..........", + "kkjjjjjji.....kkkjjjjji..........", + "kkjjjjjji......kkkjjjji..........", + "kkkjjjjji......kkkjjjjii.........", + "kkkjjjjji.......kkjjjjji.........", + ".kkjjjjj........kkkjjjji.........", + ".kkjjjji........kkkjjjjii........", + ".kkjjjji.........kkkjjjji........", + ".kkjjjji.........kkkjjjji........", + ".kkjjjji..........kkjjjjii.......", + ".kkjjjji..........kkkjjjji.......", + ".kkjjjji..........kkkjjjji.......", + ".kkjjjji...........kkjjjji.......", + ".kkjjjji...........kkkjjjii......", + ".kkjjjji...........kkkjjjji......", + ".kkkjjji............kkkjjji......", + ".kkjjjjiiii.........kkkjjjii.....", + "..kjjjjjjjiii........kkjjjj......", + ".kkkjjjjjjjjii.......kkjjjiiiii..", + ".kkkkkkkjjkkkk.......kkjjjjjjjiii", + "..kkkkkkkkkkk........kkkkjjjjjjjk", + "......kkk............kkkkkkkkkkkk", + ".......................kkkkkkkk..", + ] }, + skirt: { x: 13, y: 63, rows: [ + ".........kkkkkkkkkkkkkkkkkkkkkk.....", + ".........kkkkkkkkkkkkkkkkkkkkkk.....", + ".........kkkkkkkkkkkkkkkkkkkkkk.....", + "........rrqqqqqqqqqqqqqqqqqqqq......", + "........rrqqqqqqqqqqqqqqqqqqqpp.....", + ".......rrqqqqqqqqqqqqqqqqqqqqpp.....", + ".......rrqqqqqqqqqqqqqqqqqqqqqp.....", + ".......rrqqqqqqqqqqqqqqqqqqqqqp.....", + "......rrqqqqqqqqqqqqqqqqqqqqqqpp....", + "......rrqqqqqqqqqqqqqqqqqqqqqqpp....", + ".....rrrqqqqqqqqqqqqqqqqqqqqqqqp....", + ".....rrqqqqqqqqqqqqqqqqqqqqqqqqp....", + ".....rrqqqqqqqqqqqqqqqqqqqqqqqqpp...", + "....rrqqqqqqqqqqqqqqqqqqqqqqqqqpp...", + "....rrqqqqqqqqqqqqqqqqqqqqqqqqqqp...", + "....rrqqqqqqqqqqqqqqqqqqqqqqqqqqp...", + "...rrqqqqqqqqqqqqqqqqqqqqqqqqqqqpp..", + "...rrqqqqqqqqqqqqqqqqqqqqqqqqqqqpp..", + "..rrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqp..", + "..rrrrrrrrrrrrrrrrrqqqqqqqqqqqqqqp..", + "..rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrpp.", + ".rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.", + ".rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.", + "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.", + "...............rrrrrrrrrrrrrrrrrrrrr", + ".............................rrrrrrr", + ] }, + torso: { x: 19, y: 38, rows: [ + "............p.............", + ".......rrppppppppp........", + ".....rrrpppqpppppppp......", + "....rrrqqqqqqqqqqpppp.....", + "....rrrqqqqqqqqqqqqpp.....", + "....rrqqqqqqqqqqqqqqpppp..", + ".....qqqqqqqqqqqqqqqpppp..", + ".rrrqqqqqqqqqqqqqqqqqqqpp.", + ".rrrqqqqqqqqqqqqqqqqqqqpp.", + ".rrrrqqqqqqqqqqqqqqqqqqqpp", + "rrrrrqqqqqqqqqqqqqqqqqqqpp", + "rrrrrqqqqqqqqqqqqqqqqqqqqp", + "rrrrrqqqqqqqqqqqqqqqqqqqqp", + "rrrrrqqqqqqqqqqqqqqqqqqqqp", + ".rrrrrqqqqqqqqqqqqqqqqqqq.", + ".rrrrrqqqqqqqqqqqqqqqqqqp.", + ".rrrrrqqqqqqqqqqqqqqqqqqp.", + ".rrrrrqqqqqqqqqqqqqqqqqqp.", + ".rrrrrrqqqqqqqqqqqqqqqqqp.", + "..rrrrrqqqqqqqqqqqqqqqqqp.", + "..rrrrrqqqqqqqqqqqqqqqqqp.", + "..rrrrrqqqqqqqqqqqqqqqqq..", + "..rrrrrqqqqqqqqqqqqqqqqp..", + "...rrrrrrrrrrrrrrrrrrrrr..", + "...rrrrrrrrrrrrrrrrrrrrr..", + "...rrrrrrrrrrrrrrrrrrrrr..", + "...rrrrrrrrrrrrrrrrrrrrr..", + "...rrrrrrrrrrrrrrrrrrrrr..", + ] }, + armnear: { x: 5, y: 44, rows: [ + "...............ppp..", + "..............qqqpp.", + "............pqqqqqpp", + "...........qqqqqqqqp", + "..........qqqqqqqqqp", + "........pqqqqqqqqqqr", + ".......qqqqqqqqqqqr.", + "......qqqqqqqqqqrr..", + "....pqqqqqqqqqqrr...", + "...qqqqqqqqqqrr.....", + "..qqqqqqqqqqrr......", + ".rqqqqqqqqrr........", + "rrqqqqqqqqr.........", + "rrrqqqqqq...........", + "rrrrqqqqpp..........", + ".rrrrqqqqpp.........", + "..rrrrqqqqpp........", + "...rrrrrqqqpp.......", + "....rrrrrqqqpr......", + "......rrrrqqqraaa...", + ".......rrrrqcbbbaaa.", + "........rrrrcbbbbba.", + ".........rrrcbbbbba.", + "...........rcccbbbc.", + "............ccccccc.", + "..............ccc...", + ] }, + neck: { x: 29, y: 35, rows: [ + "cccccc", + "cccccc", + "cccccc", + "cccccc", + "cccccc", + "cccccc", + "cccccc", + "cccccc", + ] }, + head: { x: 25, y: 15, rows: [ + "........aaaaaa........", + ".....aaaaaaaaaaaa.....", + "....aaabbbbbbaaaaa....", + "...cbbbbbbbbbbbbaaa...", + "..cbbbbbbbbbbbbbbaaa..", + ".ccbbbbbbbbbbbbbbbaaa.", + ".ccbbbbbbbbbbbbbbbbaa.", + ".ccbbbbbbbbbbbbbbbbba.", + "cccbbbbbbbbbbbbbbbbbaa", + "cccbbbbbbbbbbbbbbbbbaa", + "ccccbbbbbbbbbbbbbbbbba", + "ccccbbbbbbbbbbbbbbbbba", + "ccccbbbbbbbbbbbbbbbbba", + "cccccbbbbbbbbbbbbbbbba", + ".cccccbbbbbbbbbbbbbbb.", + ".ccccccbbbbbbbbbbbbba.", + ".cccccccbbbbbbbbbbbbc.", + "..cccccccccbbbbbbbbc..", + "...ccccccccccbbbbbb...", + "....cccccccccccccc....", + ".....ccccccccccccc....", + "........ccccccccc.....", + "..........cccccc......", + ] }, + hairfront: { x: 14, y: 4, rows: [ + ".............pppppppp.................", + "........pppppppppppppppppp............", + "......ppppppqqqqqqqqpppppppp..........", + "....pppqqqqqqqqqqqqqqqqqqppppp........", + "...rpqqqqqqqqqqqqqqqqqqqqqqpppp.......", + "..rrqqqqqqrqqqqqqqqqqqqqqqqqqppp......", + "..rrqqrrrrrrrrrqqqqqqqqqqqqqqqpp......", + "..rrrrrrrrrrrrrrrqqqqqqqqqqqqqqp......", + "..rrrrrrirrrrrrrrrrrrrrrrrrrrrrr.rrr..", + "..rriiiiiiiiirrrrrrrrrrrrrrrrrrrrrrrr.", + "..kiiiijiiiiiiirrrrrrrrrrrrrrrrrrrrrr.", + ".kijjjjjjjjjiiiiiiiiiiiiiiiiiiirrrrrrr", + ".kjjjjjjjjjjjjiiiiikkiiiiiiiiiir......", + "kkjjjjjjjjjjjjjjjjkkkjjjjkjjjkki......", + "kkkjjjjjjjjjjjjjjjkkkkjjkkkjkkkk......", + "kkkjjjjjjjjjjjjjj..kkkjkkkkkkkkk......", + "kkkkjjjjjjjjjjjji..kkkk.kkk..kkk......", + ".kkkkkjjjjjjjjjj....kk...kk...........", + ".kkkkkkkkkjkjjji....k.................", + "..kkkkkkkkkkjjji......................", + "....kkkkkkkkjjji......................", + "........k.kkjjji......................", + "..........kkkjji......................", + "..........kkkjji......................", + "..........kkkjj.......................", + "...........kkji.......................", + "...........kkji.......................", + "...........kkki.......................", + "...........kkki.......................", + "...........kkkk.......................", + "............kk........................", + "............kk........................", + ".............k........................", + ] }, +}; +const ORDER = ["base", "staff", "hairback", "tailtip", "armfar", "legs", "skirt", "torso", "armnear", "neck", "head", "hairfront"]; +// Which breath each part follows: 0 stays, 1 the chest, 2 the head a beat later, 3 the ponytail's end. +const GROUP = {"base": 0, "staff": 0, "hairback": 2, "tailtip": 3, "armfar": 1, "legs": 0, "skirt": 0, "torso": 1, "armnear": 1, "neck": 1, "head": 2, "hairfront": 2}; +// The eyes half shut and shut, laid over the head. +const LIDS = { + half: { x: 0, y: 0, rows: [ + ".", + ] }, + shut: { x: 0, y: 0, rows: [ + ".", + ] }, +}; +const PAL = { a: 0xf9e1d1, b: 0xe9b9a8, c: 0xcb8b86, d: 0xa0606b, h: 0xe3a3c6, i: 0xb267a9, j: 0x764492, k: 0x423276, p: 0x9edfc6, q: 0x50ada2, r: 0x267b80, s: 0x005362, m: 0xf7e8b3, n: 0xd6b075, o: 0x9e7a60, U: 0x5f74a3, V: 0x464c7f, X: 0x3b2f61, f: 0xffefaf, g: 0xfdae3a, w: 0xfffaf0, z: 0x8cccff, e: 0xe2dcec, N: 0xd6b075, M: 0xf7e8b3, x: 0x3b2f61 }; +// Knob 4: the editions, each a hand-picked repaint of some materials. +const EDITIONS = [ + { }, + { }, + { }, + { }, +]; +// Knob 2: the stands. +const STANDS = [ + { }, + { }, + { }, + { }, +]; +// Knob 1: the gels on the rim light, with the shadow-side bounce they tint. +const GELS = [ + { }, + { }, + { }, + { }, +]; +// The wink on the hook: x, y and what the LED turns into. +const GLINT = [[60, 5, "w"]]; +// The case light: what a glossy character turns into while the band passes. +const UP = {"j": "i", "i": "h", "k": "j", "n": "m", "o": "n", "N": "M", "V": "U"}; + +const { floor, min, max } = Math; +// The events run on a fixed 25 s loop. Blinks come 2.2 to 4.2 s apart, the +// case light every 7.8 to 9.4 s, the glint on the hook every 6 or more; none +// falls between 1.5 and 2.5 s, where the still is taken. +const CYCLE = 25; +const BLINKS = [0.9, 3.4, 6.1, 8.3, 11.9, 14.6, 16.9, 20.4, 23.1]; +const SWEEPS = [4.6, 12.4, 20.2]; +const GLINTS = [3.0, 9.6, 15.8, 22.0]; +const SWEEP_LEN = 1.2; +const GLINT_LEN = 0.17; +// One breath is 3.2 s: the chest rises a pixel, the head follows a quarter +// second later and the ponytail's end a tenth after that, and both ends of the +// breath are held longer than the moves between them. +const BREATH = 3.2; +// The detail cut's top left corner, in figure LEDs. +const CUT_X = 20, CUT_Y = 3; + +function since(list, t, len) { + const u = t % CYCLE; + for (let i = 0; i < list.length; i++) { + const d = u - list[i]; + if (d >= 0 && d < len) return d; + } + return -1; +} + +function lut(ed, stand, gel) { + const t = new Int32Array(128).fill(-1); + const put = (p) => { + for (const ch in p) t[ch.charCodeAt(0)] = p[ch]; + }; + put(PAL); + put(EDITIONS[ed]); + put(STANDS[stand]); + put(GELS[gel]); + return t; +} + +function blit(buf, part, dx, dy, sweep, band) { + const rows = part.rows; + for (let j = 0; j < rows.length; j++) { + const y = part.y + j + dy; + if (y < 0 || y >= H) continue; + const r = rows[j]; + for (let i = 0; i < r.length; i++) { + const ch = r.charCodeAt(i); + if (ch === 46) continue; + const x = part.x + i + dx; + if (x < 0 || x >= W) continue; + let c = ch; + if (sweep) { + const s = x + y * 0.5 - band; + if (s >= 0 && s < 5) { + const up = UP[r[i]]; + if (up) c = up.charCodeAt(0); + } + } + buf[y * W + x] = c; + } + } +} + +export function setup(params) { + params.t = 0; + params.buf = new Uint8Array(W * H); + params.key = -1; + params.sweepAt = -10; + params.glintAt = -10; + params.gel = 0; + params.stand = 2; + params.zoom = false; + params.ed = 0; +} + +export function update(dt, input, params) { + if (!params.buf) setup(params); + const k = input.knobValues || [0, 2, 0, 0.06]; + params.t += min(dt || 0, 0.1); + params.gel = min(3, max(0, floor(k[0] * 4))); + params.stand = min(3, max(0, floor(k[1]))); + params.zoom = k[2] >= 0.5; + params.ed = min(3, max(0, floor(k[3] * 4))); + const b = input.btnPressed; + if (b && b[0]) params.sweepAt = params.t; + if (b && b[1]) params.glintAt = params.t; +} + +export function draw(display, params) { + const p = params; + if (!p.buf) setup(p); + const t = p.t; + const key = p.ed * 16 + p.stand * 4 + p.gel; + if (key !== p.key) { + p.key = key; + p.lut = lut(p.ed, p.stand, p.gel); + } + const buf = p.buf; + buf.fill(0); + + const u = (((t - 1.5) % BREATH) + BREATH) % BREATH; + const off = [0, u >= 1.1 && u < 2.7 ? -1 : 0, u >= 1.35 && u < 2.95 ? -1 : 0, u >= 1.45 && u < 3.05 ? -1 : 0]; + + let sw = since(SWEEPS, t, SWEEP_LEN); + if (t - p.sweepAt < SWEEP_LEN) sw = t - p.sweepAt; + const sweep = sw >= 0; + const band = -8 + (sw / SWEEP_LEN) * (W + H * 0.5 + 16); + + for (let n = 0; n < ORDER.length; n++) { + const name = ORDER[n]; + blit(buf, PARTS[name], 0, off[GROUP[name]], sweep, band); + } + + const db = since(BLINKS, t, 0.3); + if (db >= 0) blit(buf, db < 0.08 || db >= 0.2 ? LIDS.half : LIDS.shut, 0, off[2], false, 0); + + let dg = since(GLINTS, t, GLINT_LEN); + if (t - p.glintAt < GLINT_LEN) dg = t - p.glintAt; + if (dg >= 0) { + for (let i = 0; i < GLINT.length; i++) { + const g = GLINT[i], at = g[1] * W + g[0]; + if (buf[at]) buf[at] = g[2].charCodeAt(0); + } + } + + const L = p.lut; + for (let y = 0; y < H; y++) { + for (let x = 0; x < W; x++) { + const ch = p.zoom ? buf[(CUT_Y + (y >> 1)) * W + CUT_X + (x >> 1)] : buf[y * W + x]; + const c = ch ? L[ch] : -1; + if (c < 0) display.setPixel(x, y, 0, 0, 0); + else display.setPixel(x, y, (c >> 16) & 255, (c >> 8) & 255, c & 255); + } + } +} From 01568bd0250e7884ff5ccd2074c47ba5ea34969c Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 04:33:20 +0000 Subject: [PATCH 3/7] =?UTF-8?q?=ED=8C=A8=ED=84=B4=20=EC=97=B0=EA=B5=AC=208?= =?UTF-8?q?5=ED=8C=90:=20Tamsel=20=ED=94=BC=EA=B7=9C=EC=96=B4=EA=B0=80=20?= =?UTF-8?q?=EC=84=A0=EB=8B=A4=20(=EB=A7=8C=EB=93=9C=EB=8A=94=20=EC=B0=A8?= =?UTF-8?q?=EB=A1=80=201~13)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- incoming/pattern-study/patterns/tamsel.js | 782 +++++++++++----------- 1 file changed, 400 insertions(+), 382 deletions(-) diff --git a/incoming/pattern-study/patterns/tamsel.js b/incoming/pattern-study/patterns/tamsel.js index 0f5aa2fb..d926d86b 100644 --- a/incoming/pattern-study/patterns/tamsel.js +++ b/incoming/pattern-study/patterns/tamsel.js @@ -24,440 +24,457 @@ const W = 64, H = 128; // w the specular, f g the flame, e the whites of the eyes, x the pupils. const PARTS = { base: { x: 6, y: 110, rows: [ - "....................UUUUUUUUUUU....................", - ".........UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU.........", - ".....UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU.....", - "..UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU..", - ".UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU.", - "VUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV", - "VVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVV", - "VVVVVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVV", - "VVVVVVVVVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVV", - "VVVVVVVVVVVVVVVVVVVVUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVV", - "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV", - "..VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV..", - ".....VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV.....", - ".........VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV.........", - "....................VVVVVVVVVVV....................", + "....................NNNNNNNNNNN....................", + ".........NNNNNNNNNNNUUUUUUUUUUNNNNNNNNNNNN.........", + ".....NNNNUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUNNwN.....", + "..NNNUUUUUUUUUUXXXXXXXXXXUUUUUUUUUUUUUUUUUUUUUNNN..", + ".NUUUUUUUUUUUXXXXXXXXXXXXXXUUUUUUUUUUUUUUUUUUUUUUN.", + "VNUUUUUUUUUUUUXXXXXXXXXXXXUUUUUUUUUXXXXXXXXXXUUXXNV", + "VVMMMUUUUUUUUUUUUUUUUUUUUUUUUUUUUUXXXXXXXXXXXXMMMVV", + "VVVVVMMMMUUUUUUUUUUUUUUUUUUUUUUUUUUXXXXXXXMMMMVVVVV", + "VVVVVVVVVMMMMMMMMMMMUUUUUUUUUUUMMMMMMMMMMMVVVVVVwVV", + "VVVVVVVVVVVVVVVVVVVVMMMMMMMMMMMVVVVVVVVVVVVVVVVVVVV", + "XXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXX", + "..XXXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXXX..", + ".....XXXXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXXXX.....", + ".........XXXXXXXXXXXVVVVVVVVVVVXXXXXXXXXXX.........", + "....................XXXXXXXXXXX....................", ] }, - staff: { x: 54, y: 4, rows: [ - "...mmmmm..", - "..nnnnnmmm", - ".onnnoooom", - ".nnn....oo", - "onn......o", - "onm......o", - "onm......m", - "oom.....nm", - ".omm..oooo", - ".onm..gggg", - ".onm..gggg", - ".onmm.gggg", - ".onnm.gggg", - ".onnm.gggg", - ".onnm.gggg", - ".onnm.gggg", - ".onnm.gggg", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".onnm.....", - ".oonm.....", - "..oo......", + staff: { x: 54, y: 3, rows: [ + "...nnnw...", + "..nn..mmm.", + "onm.....mm", + "onm.....nm", + "onm.....nm", + "onm.....om", + "onm.....o.", + "onm.....o.", + "onm.....o.", + "onm...onno", + "onm...offo", + "onm...offo", + "onm...ogfo", + "onm...oggo", + "onm...onno", + "onm....oo.", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "onm.......", + "oom.......", + "ooo.......", ] }, - hairback: { x: 3, y: 9, rows: [ - ".............iiii...............", - "...........kiiiiiiiiiiiii.......", - "..........kijjjjiiiiiiiiiii.....", - "..........kjjjjjjjjjjjjjiiii....", - ".........kjjjjjjjjjjjjjjjjiii...", - "........kjjjjjjjjjjjjjjjjjjiii..", - "........kjjjjjjjjjjjjjjjjjjjii..", - ".......kjjjjjjjjjjjjjjjjjjjjjii.", - ".......jjjjjjjjjjjjjjjjjjjjjjii.", - "......kjjjjjjjjjjjjjjjjjjjjjjji.", - ".....kjjjjjjjjjjjjjjjjjjjjjjjjii", - ".....kjjjjjjjjjjjjjjjjjjjjjjjjii", - "....kjjjjjjjjjjjjjjjjjjjjjjjjjji", - "...kkjjjjjjjjjjjjjjjjjjjjjjjjjji", - "...kkjjjjjjjjjjjjjjjjjjjjjjjjjji", - "..kkkjjjjjjjjjkjjjjjjjjjjjjjjjji", - "..kkkjjjjjjjjkkkjjjjjjjjjjjjjjji", - ".kkkkjjjjjjjkkkkjjjjjjjjjjjjjjji", - ".kkkkjjjjjjkkkkkkjjjjjjjjjjjjjj.", - ".kkkjjjjjjkkkkkkkkjjjjjjjjjjjji.", - ".kkkjjjjjj.kkkkkkkkjjjjjjjjjjji.", - ".kkkjjjjj...kkkkkkkkkjjjjjjjjk..", - ".kkkjjjji...kkkkkkkkkkkkkkkkkk..", - ".kkkjjjj.....kkkkkkkkkkkkkkkk...", - "kkkkjjji......kkkkkkkkkkkkkk....", - "kkkkjjj........kkkkkkkkkkkk.....", - "kkkkjji..........kkkkkkkk.......", - "kkkkkj..........................", - "kkkkki..........................", + hairback: { x: 3, y: 8, rows: [ + ".............zJ................", + "...........zJJjjj..............", + "..........zJJjjjjj.............", + ".........zJJjjjjjjjjj..........", + "........zJJjjjjiiijjjjjj.......", + "........zJJjjjjiiijjjjjjjj.....", + ".......zJJjjjjiiiijjjjjjjjj....", + ".......zJJjjjjiiijjjjjjjjjjj...", + "......zJJjjjjiiiijjjjjjjjjjjj..", + "......zJJjjjiiiijjjjjjjjjjjjj..", + ".....zJJjjjhhiijjjjjjjjjjjjjjj.", + "....zKKjjjjhhiijjjjjjjjjjjjjjj.", + "....zKKkjjhhiijjjjjjjjjjjjjjjj.", + "...zKKkkjhhiiijjjjjjjjjjjjjjjj.", + "...zKKkjjhiiijjjjjjjjjjjjjjjjjj", + "..zKKkkjjiiijjjjjjjjjjjjjjjjjjj", + "..zKKkkjjiiijjjjjjjjjjjjjjjjjjj", + ".zKKkkjjiiikjjjjjjjjjjjjjjjjjjj", + ".zKKkkjhiiikkjjjjjjjjjjjjjjjjj.", + ".zKKkjjhiikkkkjjjjjjjjjjjjjjjj.", + ".zKKkjhhiikkkkkjjjjjjjjjjjjjjj.", + ".zKKkjhii.zKKkkkjjjjjjjjjjjjjj.", + ".zKKjjhii..zKKkkjjjjjjjjjjjjj..", + "zKKkjjii...zKKkkkjjjjjjjjjjjj..", + "zKKkjjii....zKKkkkjjjjjjjjjj...", + "zKKjjji......zKKkkkjjjjjjjj....", + "zKKjjii.......zKKkkkjjjjjj.....", + "zKKjji..........zKKkkjjj.......", + "zKJjji.............zk..........", + "zKJjj..........................", + "zJJjj..........................", + ".jjj...........................", ] }, - tailtip: { x: 3, y: 38, rows: [ - "kkkkk", - "kkkkk", - "kkkkk", - ".kkkk", - ".kkk.", - ".kkk.", - "..kk.", - "..kk.", + tailtip: { x: 3, y: 34, rows: [ + ".jjj..", + "zKjjj.", + "zKKji.", + "zKKji.", + "zKKji.", + "zKKji.", + ".zKJi.", + ".zKJi.", + "..zJi.", + "..zJi.", + "..zJJ.", + "...zJ.", + "....zk", + ".....z", ] }, armfar: { x: 38, y: 44, rows: [ - ".rppp.................", - "rrqqpp................", - "rrqqqpp...............", - "rrrqqqpp..............", - "rrrqqqqp..............", - ".rrrqqqpp.......aaaaa.", - ".rrrrqqqpp...ppcbbbbaa", - "..rrrrqqqpppqqpcbbbbba", - "...rrrqqqqqqqqpcbbbbba", - "....rrrqqqqqqqpccbbbba", - "....rrrrqqqqqqpccccccc", - ".....rrrrqqqqqrrccccc.", - "......rrrrqqrrr.......", - ".......rrrrrr.........", - "........rrr...........", + ".qqqp...............", + "qqqqpp..............", + "qqqqqpp.............", + "qqqqqqpp............", + "qqqqqqqp............", + ".qrrqqqqq......bbbb.", + ".qrrrqqqqp..ssbbaaaa", + "..rrrqqqqpssssbbaaaa", + "...rrrqqqqsssbcccaab", + "....rrrqqqsssbbcbbbb", + "....rrrqqqssssccbbbb", + ".....rrrqqqsssccccc.", + "......rrrrrrrr......", + ".......rrrrr........", + "........rrr.........", ] }, legs: { x: 23, y: 80, rows: [ - "..iiiii.....kiiii................", - ".kjjjjii...kjjjjii...............", - "kkjjjjjii..kjjjjji...............", - "kkjjjjjji.kkkjjjjii..............", - "kkjjjjjji.kkkjjjjji..............", - "kkjjjjjji..kkjjjjji..............", - "kkjjjjjji..kkkjjjjii.............", - "kkjjjjjji..kkkjjjjji.............", - "kkjjjjjji...kkkjjjji.............", - "kkjjjjjji...kkkjjjjii............", - "kkjjjjjji....kkjjjjji............", - "kkjjjjjji....kkkjjjjii...........", - "kkjjjjjji....kkkjjjjji...........", - "kkjjjjjji.....kkjjjjji...........", - "kkjjjjjji.....kkkjjjjii..........", - "kkjjjjjji.....kkkjjjjji..........", - "kkjjjjjji......kkkjjjji..........", - "kkkjjjjji......kkkjjjjii.........", - "kkkjjjjji.......kkjjjjji.........", - ".kkjjjjj........kkkjjjji.........", - ".kkjjjji........kkkjjjjii........", - ".kkjjjji.........kkkjjjji........", - ".kkjjjji.........kkkjjjji........", - ".kkjjjji..........kkjjjjii.......", - ".kkjjjji..........kkkjjjji.......", - ".kkjjjji..........kkkjjjji.......", - ".kkjjjji...........kkjjjji.......", - ".kkjjjji...........kkkjjjii......", - ".kkjjjji...........kkkjjjji......", - ".kkkjjji............kkkjjji......", - ".kkjjjjiiii.........kkkjjjii.....", - "..kjjjjjjjiii........kkjjjj......", - ".kkkjjjjjjjjii.......kkjjjiiiii..", - ".kkkkkkkjjkkkk.......kkjjjjjjjiii", - "..kkkkkkkkkkk........kkkkjjjjjjjk", - "......kkk............kkkkkkkkkkkk", + "..jjjjj.....jjjjj................", + ".jjjjjjj...jjjjjjj...............", + "jjjjjjjjj..jjjjjjj...............", + "jjjjjjjjj.jjjjjjjjj..............", + "jjjjjjjjj.jjjjjjjjj..............", + "kkkjjjjjj..kkjjjjjj..............", + "kkkjjjjjj..kkjjjjjjj.............", + "zKKjjjjii..kkjjjjjij.............", + "zKKjjjjii...zKJjjjii.............", + "zKKjjjjii...zKJjjjiij............", + "ziiiiiiii....ziiiiiij............", + "zKKkkkkkk....zKKkkkkij...........", + "zKKjjjhiw....zKKjjjiij...........", + "zKKjjjhii.....zKJjjjii...........", + "zKKjjjhii.....zKJjjjiii..........", + "zKKjjjhii.....zKJjjjjii..........", + "zKKjjjhii......zKJjjjii..........", + "zKKjjjhii......zKJjjjjii.........", + "zKKjjjhii.......zKJjjjii.........", + ".zKJjjhi........zKJjjhii.........", + ".zKJjjhi........zKJjjhhwi........", + ".zKJjjhi.........zKJjjhii........", + ".zKJjjhi.........zKJjjhii........", + ".zKJjjji..........zJJjhhii.......", + ".zKJjjji..........zKJjjhii.......", + ".zKJjjji..........zKJjjhii.......", + ".zKJjjji...........zJJjjji.......", + ".zKJjjji...........zKJjjjii......", + ".zKJjjji...........zKJjjjji......", + ".zKJjjjj............zJJjjji......", + ".zJJjjjjjii.........zJJjjjjj.....", + "..jjjjjjiiiii........jjjjjj......", + ".jjjjjjjjiiijj.......jjjjjjjiii..", + ".jjjjjjjjjjjjj.......jjjjjjiiiiij", + "..kkkkjjjkkkk........jjjjjjjjiijj", + "......kkk............kkjjjjjjjjkk", ".......................kkkkkkkk..", ] }, skirt: { x: 13, y: 63, rows: [ - ".........kkkkkkkkkkkkkkkkkkkkkk.....", - ".........kkkkkkkkkkkkkkkkkkkkkk.....", - ".........kkkkkkkkkkkkkkkkkkkkkk.....", - "........rrqqqqqqqqqqqqqqqqqqqq......", - "........rrqqqqqqqqqqqqqqqqqqqpp.....", - ".......rrqqqqqqqqqqqqqqqqqqqqpp.....", - ".......rrqqqqqqqqqqqqqqqqqqqqqp.....", - ".......rrqqqqqqqqqqqqqqqqqqqqqp.....", - "......rrqqqqqqqqqqqqqqqqqqqqqqpp....", - "......rrqqqqqqqqqqqqqqqqqqqqqqpp....", - ".....rrrqqqqqqqqqqqqqqqqqqqqqqqp....", - ".....rrqqqqqqqqqqqqqqqqqqqqqqqqp....", - ".....rrqqqqqqqqqqqqqqqqqqqqqqqqpp...", - "....rrqqqqqqqqqqqqqqqqqqqqqqqqqpp...", - "....rrqqqqqqqqqqqqqqqqqqqqqqqqqqp...", - "....rrqqqqqqqqqqqqqqqqqqqqqqqqqqp...", - "...rrqqqqqqqqqqqqqqqqqqqqqqqqqqqpp..", - "...rrqqqqqqqqqqqqqqqqqqqqqqqqqqqpp..", - "..rrqqqqqqqqqqqqqqqqqqqqqqqqqqqqqp..", - "..rrrrrrrrrrrrrrrrrqqqqqqqqqqqqqqp..", - "..rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrpp.", - ".rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.", - ".rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.", - "rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.", - "...............rrrrrrrrrrrrrrrrrrrrr", - ".............................rrrrrrr", + ".........rrrrrqqqqqqqqqqqqqqqq......", + ".........rrrrrqqqqqqqqqqqqqqqq......", + ".........rrrrrqqqqqqqqqqqqqqqq......", + "........rrrrrrqqqqqqqqqqqqqppp......", + "........rrrrrrqqqqqqqqqqqqqpppq.....", + ".......rrrrrrrqqqqqqqqqqqqqpppq.....", + ".......rrrrrrrqqqqqqqqqqqqqpppq.....", + ".......zRRrrrrqqqqrqqqqqqqqpppp.....", + "......zRRrrrrrqqqqrqqqqqqqqppppq....", + "......zRRrrrrrqqqqrqqqqqqqqqpppq....", + ".....zRRrrrrrrqqqqrqqqqqqqqqpppp....", + ".....zRRrrrrrrqqqqrqqqqqqqqqpppp....", + ".....zRRrrrrrrqqqqrrqqqqqqqqppppq...", + "....zRRrrrrrrrqqqqrrqqqqqqqqppppq...", + "....zRRrrrrrrrqqqqrrqqqqqqqqqpppp...", + "....zRRrrrrrrrqqqqrrqqqqqqqqqpppp...", + "...zRRrrrrrrrqqqqqrrqqqqqqqqqppppp..", + "...zRRrrrrrrrqqqqqrrqqqqqqqqqppppp..", + "..zRRrrrrrrrrqqqqqrrqqqqqqqqqppppp..", + "..zRRrrrrrrrrqqqqqrrqqqqqqqqqppppp..", + "..zRRrrrrrrrrqqqqqrrqqqqqqqqqqppppp.", + ".zRRrrrrrrrrrqqqqqrrqqqqqqqqqqppppp.", + ".zRRrrrrrrrrrqqqqqrrqqqqqqqqqqppppp.", + "zTTssssssssssssqqqrrqqqqqqqqqqppppp.", + "...............ssssssssssssssqpppppp", + ".............................ssqqqqq", ] }, - torso: { x: 19, y: 38, rows: [ - "............p.............", - ".......rrppppppppp........", - ".....rrrpppqpppppppp......", - "....rrrqqqqqqqqqqpppp.....", - "....rrrqqqqqqqqqqqqpp.....", - "....rrqqqqqqqqqqqqqqpppp..", - ".....qqqqqqqqqqqqqqqpppp..", - ".rrrqqqqqqqqqqqqqqqqqqqpp.", - ".rrrqqqqqqqqqqqqqqqqqqqpp.", - ".rrrrqqqqqqqqqqqqqqqqqqqpp", - "rrrrrqqqqqqqqqqqqqqqqqqqpp", - "rrrrrqqqqqqqqqqqqqqqqqqqqp", - "rrrrrqqqqqqqqqqqqqqqqqqqqp", - "rrrrrqqqqqqqqqqqqqqqqqqqqp", - ".rrrrrqqqqqqqqqqqqqqqqqqq.", - ".rrrrrqqqqqqqqqqqqqqqqqqp.", - ".rrrrrqqqqqqqqqqqqqqqqqqp.", - ".rrrrrqqqqqqqqqqqqqqqqqqp.", - ".rrrrrrqqqqqqqqqqqqqqqqqp.", - "..rrrrrqqqqqqqqqqqqqqqqqp.", - "..rrrrrqqqqqqqqqqqqqqqqqp.", - "..rrrrrqqqqqqqqqqqqqqqqq..", - "..rrrrrqqqqqqqqqqqqqqqqp..", - "...rrrrrrrrrrrrrrrrrrrrr..", - "...rrrrrrrrrrrrrrrrrrrrr..", - "...rrrrrrrrrrrrrrrrrrrrr..", - "...rrrrrrrrrrrrrrrrrrrrr..", - "...rrrrrrrrrrrrrrrrrrrrr..", + torso: { x: 19, y: 39, rows: [ + "..........zQQqq...........", + "......zQQqqqqqppppp.......", + ".....zRRrqqqpppppppp......", + "....zRRrrqqqppppppppp.....", + "....zRRrrqqqqppppppppppp..", + ".....zRRrqqqqqpppppqpppp..", + ".rrrrrrrrqqqqqqqqqqqppppp.", + ".rrrrrrrrqqqqqqqqqqqppppp.", + ".rrrrrqssssssssssssqpppppp", + "rrrrrrqqqqqqqqqqqrpqpppppp", + "rrrrrrqqqqqqqqqqqrpqqppppp", + "rrrrrrrqqqqqqqqqqrpqqppppp", + "rrrrrrrqqqqqqqqqqrpqqppppp", + ".rrrrrrqqqqqqqqqqrpqqpppp.", + ".rrrrrrqqqqqqqqqqrpqqpppp.", + ".zRRrrrqqqqqqqqqqrpqqpppp.", + ".zRRrrrqqqqqqqqqqrpqqpppp.", + ".zRRrrrqqqqqqqqqqqrpqpppp.", + "..zRRrrrqqqqqqqqqqrpqpppp.", + "..zRRrrrqqqqqqqqqqrpqpppp.", + "..zRRrrrqqqqqqqqqqrpqppp..", + "..zRRrrrqqqqqqqqqqrpqppp..", + "..zRRrrrqqqqqqqqqqrpqppp..", + "...zRRrrqqqqqqqqqqrpqppp..", + "...rrrrrqqqqqqqqqqqqqppp..", + "...rrrrrqqqqqqqqqqqqqppp..", + "...rrrrrqqqqqqqqqqqqqppp..", + ] }, + belt: { x: 22, y: 63, rows: [ + "kkkkkkkkkjjjjnnnjjjjjj", + "kkkkkkkkkiiiinwoiiiiii", + ".kkkkkkkkkkkknookkkkk.", ] }, armnear: { x: 5, y: 44, rows: [ - "...............ppp..", - "..............qqqpp.", - "............pqqqqqpp", - "...........qqqqqqqqp", - "..........qqqqqqqqqp", - "........pqqqqqqqqqqr", - ".......qqqqqqqqqqqr.", - "......qqqqqqqqqqrr..", - "....pqqqqqqqqqqrr...", - "...qqqqqqqqqqrr.....", - "..qqqqqqqqqqrr......", - ".rqqqqqqqqrr........", - "rrqqqqqqqqr.........", - "rrrqqqqqq...........", - "rrrrqqqqpp..........", - ".rrrrqqqqpp.........", - "..rrrrqqqqpp........", - "...rrrrrqqqpp.......", - "....rrrrrqqqpr......", - "......rrrrqqqraaa...", - ".......rrrrqcbbbaaa.", - "........rrrrcbbbbba.", - ".........rrrcbbbbba.", - "...........rcccbbbc.", - "............ccccccc.", + "...............zQQ..", + "..............zppqq.", + "............zppppqqq", + "...........zppppqqqq", + "..........zpppqqqqqq", + "........zppppqqqqqqq", + ".......zpppqqrrqqqq.", + "......zpppqqrrrqqq..", + "....zppppqqrrrqqq...", + "...zpppqqqrrrqq.....", + "..zpppqqqrrrqq......", + ".zQQqqqqrrrr........", + "zQQqqqrrrrr.........", + "zQQqqrrrq...........", + "zQQqqrrqqq..........", + ".zQQqrqqqqq.........", + "..zRRqqqqsss........", + "...zRRqqssqqq.......", + "....zRRqssqqqs......", + "......zTTssqssbbb...", + ".......zTTsssbbaaaa.", + "........zTTsbbbaaaaa", + ".........zTTbbbaaab.", + "...........zccbbbbb.", + "............zccccc..", "..............ccc...", ] }, neck: { x: 29, y: 35, rows: [ "cccccc", "cccccc", - "cccccc", - "cccccc", + "dddddd", + "dddddc", "cccccc", "cccccc", "cccccc", "cccccc", ] }, - head: { x: 25, y: 15, rows: [ - "........aaaaaa........", - ".....aaaaaaaaaaaa.....", - "....aaabbbbbbaaaaa....", - "...cbbbbbbbbbbbbaaa...", - "..cbbbbbbbbbbbbbbaaa..", - ".ccbbbbbbbbbbbbbbbaaa.", - ".ccbbbbbbbbbbbbbbbbaa.", - ".ccbbbbbbbbbbbbbbbbba.", - "cccbbbbbbbbbbbbbbbbbaa", - "cccbbbbbbbbbbbbbbbbbaa", - "ccccbbbbbbbbbbbbbbbbba", - "ccccbbbbbbbbbbbbbbbbba", - "ccccbbbbbbbbbbbbbbbbba", - "cccccbbbbbbbbbbbbbbbba", - ".cccccbbbbbbbbbbbbbbb.", - ".ccccccbbbbbbbbbbbbba.", - ".cccccccbbbbbbbbbbbbc.", - "..cccccccccbbbbbbbbc..", - "...ccccccccccbbbbbb...", - "....cccccccccccccc....", - ".....ccccccccccccc....", - "........ccccccccc.....", - "..........cccccc......", + head: { x: 26, y: 16, rows: [ + ".......bbbbbbb.......", + ".....bbbbbbbbbbb.....", + "....bbbbbbbbbbbbb....", + "...bbbbbbbbbbbbbbb...", + "..cccbbbbccbbbccbcc..", + ".cccccbccbbbbbbbbbbb.", + ".cccccbbbbbbbbbbbbba.", + "ccccccbbbbbbbbbxxxbaa", + "ccccccbxxxxbbbxbbbxaa", + "ccccccxbbbbbbbbbbbbaa", + "ccccccbxxxxbbbbxxxbaa", + "ccccccbaxxabbbbxxabaa", + "cccccccaxxgbbbbxxgaaa", + "cccccccagggbbbbgggaaa", + ".cccccccggbbbbbbgbaa.", + ".cccccccbbbbbbbbbbaaa", + "..ccccccbbbbbbbbbbbc.", + "...ccccccbbbbbbbbbb..", + "....ccccccbbbbbdbb...", + ".....ccccccbcddbb....", + ".......cccccccccc....", + ".........ccccccc.....", ] }, - hairfront: { x: 14, y: 4, rows: [ - ".............pppppppp.................", - "........pppppppppppppppppp............", - "......ppppppqqqqqqqqpppppppp..........", - "....pppqqqqqqqqqqqqqqqqqqppppp........", - "...rpqqqqqqqqqqqqqqqqqqqqqqpppp.......", - "..rrqqqqqqrqqqqqqqqqqqqqqqqqqppp......", - "..rrqqrrrrrrrrrqqqqqqqqqqqqqqqpp......", - "..rrrrrrrrrrrrrrrqqqqqqqqqqqqqqp......", - "..rrrrrrirrrrrrrrrrrrrrrrrrrrrrr.rrr..", - "..rriiiiiiiiirrrrrrrrrrrrrrrrrrrrrrrr.", - "..kiiiijiiiiiiirrrrrrrrrrrrrrrrrrrrrr.", - ".kijjjjjjjjjiiiiiiiiiiiiiiiiiiirrrrrrr", - ".kjjjjjjjjjjjjiiiiikkiiiiiiiiiir......", - "kkjjjjjjjjjjjjjjjjkkkjjjjkjjjkki......", - "kkkjjjjjjjjjjjjjjjkkkkjjkkkjkkkk......", - "kkkjjjjjjjjjjjjjj..kkkjkkkkkkkkk......", - "kkkkjjjjjjjjjjjji..kkkk.kkk..kkk......", - ".kkkkkjjjjjjjjjj....kk...kk...........", - ".kkkkkkkkkjkjjji....k.................", - "..kkkkkkkkkkjjji......................", - "....kkkkkkkkjjji......................", - "........k.kkjjji......................", - "..........kkkjji......................", - "..........kkkjji......................", - "..........kkkjj.......................", - "...........kkji.......................", - "...........kkji.......................", - "...........kkki.......................", - "...........kkki.......................", - "...........kkkk.......................", - "............kk........................", - "............kk........................", - ".............k........................", + hairfront: { x: 16, y: 4, rows: [ + ".........zQQqqqqqqppp..............", + ".....zQQqqqqqqqqppppppppp..........", + "...zRRqqqqqqqqqpppppppppppp........", + "..zRRrqqqqqqqqqppppppppppppp.......", + ".rrrrrqqqqqqqqqpppppppppppppp......", + "rrrrrrqqqqqqqqqqppppppppppppqq.....", + "rrrrrrrrrqqqqqqqqqqppppppqqqqq.....", + "rrrrrrrrrrrrrrqqqqqqqqqqqqqqqq.....", + "rrrrrrrrrrrrrrqqqqqqqqpppppppppppp.", + "rrrrrrrrrrrrrrqqqqqqqqppppppppppqqq", + ".ssssssssssssskkkkkkkkkkkkkkkkkqqqq", + "..............kkkkkkkkkkkkkkkkkssss", + "...............jjjjjjjjjjjjjjjj....", + "........k......jjjjjjjjjjiiiiii....", + "........kkjjjii.jjjjjjjjjihhhii....", + "........kkjjjii.jjjjjjjjjiiiiii....", + "........kkjjjii..jj..jjj..i..ii....", + "........kkjjjii.......j...i........", + "........kkjjjii....................", + "........kkjjjii....................", + "........kkjjjii....................", + ".........kjjji.....................", + ".........kjjji.....................", + ".........kjjji.....................", + ".........kkjji.....................", + ".........kkjji.....................", + ".........kkjji.....................", + ".........kkjji.....................", + "..........kjj......................", + "..........kjj......................", + "..........jjj......................", + "...........jj......................", ] }, }; -const ORDER = ["base", "staff", "hairback", "tailtip", "armfar", "legs", "skirt", "torso", "armnear", "neck", "head", "hairfront"]; +const ORDER = ["base", "staff", "hairback", "tailtip", "armfar", "legs", "skirt", "torso", "belt", "armnear", "neck", "head", "hairfront"]; // Which breath each part follows: 0 stays, 1 the chest, 2 the head a beat later, 3 the ponytail's end. -const GROUP = {"base": 0, "staff": 0, "hairback": 2, "tailtip": 3, "armfar": 1, "legs": 0, "skirt": 0, "torso": 1, "armnear": 1, "neck": 1, "head": 2, "hairfront": 2}; +const GROUP = {"base": 0, "staff": 0, "hairback": 2, "tailtip": 3, "armfar": 1, "legs": 0, "skirt": 0, "torso": 1, "belt": 0, "armnear": 1, "neck": 1, "head": 2, "hairfront": 2}; // The eyes half shut and shut, laid over the head. const LIDS = { - half: { x: 0, y: 0, rows: [ - ".", + half: { x: 33, y: 26, rows: [ + "bbbb....bbb", + "xxxx....xxx", ] }, - shut: { x: 0, y: 0, rows: [ - ".", + shut: { x: 33, y: 26, rows: [ + "bbbb....bbb", + "bbbb....bbb", + "bbbb....bbb", + "xxxx....xxx", + "bbbb....bbb", ] }, }; -const PAL = { a: 0xf9e1d1, b: 0xe9b9a8, c: 0xcb8b86, d: 0xa0606b, h: 0xe3a3c6, i: 0xb267a9, j: 0x764492, k: 0x423276, p: 0x9edfc6, q: 0x50ada2, r: 0x267b80, s: 0x005362, m: 0xf7e8b3, n: 0xd6b075, o: 0x9e7a60, U: 0x5f74a3, V: 0x464c7f, X: 0x3b2f61, f: 0xffefaf, g: 0xfdae3a, w: 0xfffaf0, z: 0x8cccff, e: 0xe2dcec, N: 0xd6b075, M: 0xf7e8b3, x: 0x3b2f61 }; +const PAL = { a: 0xf9e1d1, b: 0xe9b9a8, c: 0xcb8b86, d: 0xa0606b, h: 0xe3a3c6, i: 0xb267a9, j: 0x764492, k: 0x423276, p: 0x9edfc6, q: 0x50ada2, r: 0x267b80, s: 0x005362, m: 0xf7e8b3, n: 0xd6b075, o: 0x9e7a60, U: 0x5f74a3, V: 0x464c7f, X: 0x3b2f61, f: 0xffefaf, g: 0xfdae3a, w: 0xfffaf0, z: 0x8cccff, e: 0xe2dcec, N: 0xd6b075, M: 0xf7e8b3, x: 0x3b2f61, K: 0x423276, R: 0x267b80, T: 0x005362, J: 0x764492, Q: 0x50ada2 }; // Knob 4: the editions, each a hand-picked repaint of some materials. const EDITIONS = [ { }, - { }, - { }, - { }, + { p: 0xfcb6a4, q: 0xdf6f71, r: 0xab4660, s: 0x752d4f, h: 0x90c3d9, i: 0x2e89b8, j: 0x005d97, k: 0x1c3c73, K: 0x1c3c73, R: 0xab4660, T: 0x752d4f, J: 0x005d97, Q: 0xdf6f71 }, + { p: 0xeae8e0, q: 0xadb7c0, r: 0x77828e, s: 0x4c5564, h: 0xf2e2a9, i: 0xd7b06d, j: 0xaf7c4d, k: 0x7e4d38, a: 0xf8dec6, b: 0xe1b198, c: 0xbc8374, d: 0x8f5a58, K: 0x7e4d38, R: 0x77828e, T: 0x4c5564, J: 0xaf7c4d, Q: 0xadb7c0 }, + { a: 0xe6e2df, b: 0xc4c0be, c: 0x999593, d: 0x706c6a, h: 0xb9b5b3, i: 0x84807e, j: 0x5c5957, k: 0x403d3b, p: 0xd5d1ce, q: 0xa19d9b, r: 0x726f6d, s: 0x4e4b49, m: 0xede7e3, n: 0xbbb5b1, o: 0x86807d, f: 0xede7e3, g: 0xbbb5b1, e: 0xdbd6d4, x: 0x494644, K: 0x403d3b, R: 0x726f6d, T: 0x4e4b49, J: 0x5c5957, Q: 0xa19d9b }, ]; // Knob 2: the stands. const STANDS = [ + { U: 0xb2815f, V: 0x8d5541, X: 0x67332f, N: 0xcea378, M: 0xe0c29b }, + { U: 0xd5d7dd, V: 0xa9abb2, X: 0x797c84, N: 0xb5b5c0, M: 0xe1e2e8 }, { }, - { }, - { }, - { }, + { U: 0x00658c, V: 0x00bcd9, X: 0x0084a8, N: 0x7de1ed, M: 0xc1f8f9 }, ]; // Knob 1: the gels on the rim light, with the shadow-side bounce they tint. const GELS = [ { }, - { }, - { }, - { }, + { z: 0xfb6acd, K: 0x74266e, R: 0x7b4c89, T: 0x5f376b, J: 0x9f3d88, Q: 0x9f87b9 }, + { z: 0x81ef7e, K: 0x004d41, R: 0x297554, T: 0x005742, J: 0x006c6f, Q: 0x5ab788 }, + { z: 0xffbf5d, K: 0x7c343b, R: 0x866139, T: 0x6e3f2a, J: 0xa04657, Q: 0x98a76d }, ]; // The wink on the hook: x, y and what the LED turns into. -const GLINT = [[60, 5, "w"]]; +const GLINT = [[60, 3, "w"], [59, 3, "w"], [61, 4, "w"]]; // The case light: what a glossy character turns into while the band passes. -const UP = {"j": "i", "i": "h", "k": "j", "n": "m", "o": "n", "N": "M", "V": "U"}; +const UP = {"j": "i", "J": "i", "i": "h", "k": "j", "K": "j", "n": "m", "o": "n", "N": "M"}; const { floor, min, max } = Math; // The events run on a fixed 25 s loop. Blinks come 2.2 to 4.2 s apart, the -// case light every 7.8 to 9.4 s, the glint on the hook every 6 or more; none +// case light every 7.8 to 9.4 s, taking 2.4 s to cross, the glint on the hook every 6 or more; none // falls between 1.5 and 2.5 s, where the still is taken. const CYCLE = 25; const BLINKS = [0.9, 3.4, 6.1, 8.3, 11.9, 14.6, 16.9, 20.4, 23.1]; const SWEEPS = [4.6, 12.4, 20.2]; const GLINTS = [3.0, 9.6, 15.8, 22.0]; -const SWEEP_LEN = 1.2; +const SWEEP_LEN = 2.4; const GLINT_LEN = 0.17; // One breath is 3.2 s: the chest rises a pixel, the head follows a quarter // second later and the ponytail's end a tenth after that, and both ends of the @@ -501,7 +518,7 @@ function blit(buf, part, dx, dy, sweep, band) { let c = ch; if (sweep) { const s = x + y * 0.5 - band; - if (s >= 0 && s < 5) { + if (s >= 0 && s < 6) { const up = UP[r[i]]; if (up) c = up.charCodeAt(0); } @@ -556,9 +573,10 @@ export function draw(display, params) { const sweep = sw >= 0; const band = -8 + (sw / SWEEP_LEN) * (W + H * 0.5 + 16); + // The case light passes over the gloss above the stand; the boots and the stand keep still. for (let n = 0; n < ORDER.length; n++) { const name = ORDER[n]; - blit(buf, PARTS[name], 0, off[GROUP[name]], sweep, band); + blit(buf, PARTS[name], 0, off[GROUP[name]], sweep && name !== "legs" && name !== "base", band); } const db = since(BLINKS, t, 0.3); From d86a03655a5c227339786b2f9d3722f0e1c1c391 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 05:00:17 +0000 Subject: [PATCH 4/7] =?UTF-8?q?=ED=8C=A8=ED=84=B4=20=EC=97=B0=EA=B5=AC=208?= =?UTF-8?q?5=ED=8C=90:=20=ED=8C=A8=EC=8A=A4=201=C2=B72=20=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D=20(=EB=91=98=20=EB=8B=A4=20=EB=90=98=EB=8F=8C?= =?UTF-8?q?=EB=A6=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- incoming/pattern-study/craft/01-figure/log.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 incoming/pattern-study/craft/01-figure/log.md diff --git a/incoming/pattern-study/craft/01-figure/log.md b/incoming/pattern-study/craft/01-figure/log.md new file mode 100644 index 00000000..2f923760 --- /dev/null +++ b/incoming/pattern-study/craft/01-figure/log.md @@ -0,0 +1,30 @@ +상태: a 깎는 중 + +## 85판 (바퀴 83) · 길 a · 시작 01568bd +- 쉬는 프레임 t=2 · 노브 [0, 2, 0, 0.06] +- 리그(첫 바퀴만): 안 1 2.5승 · 안 2 2.5승 · 안 4 1승 · 안 3 0승 → 길 a 안 1, 길 b 안 2 +- 리그 동점 가리기: 둘끼리 붙은 짝이 정순·역순으로 엇갈림. 새 판정 둘에게 같은 짝을 한 번 더 물었더니 둘 다 왼쪽을 골라 또 엇갈림. 두 안을 따로 된 그림 둘로 주고 정순·역순으로 물으니 둘 다 안 1(8점 대 6점) +- 비평 1: 장인 6 · 캐릭터 8 · 사진가 8 · 관객 7 · 블라인드 읽기 3/3 · 닮은꼴 초록 모자의 엘프 용사 「가깝다」 하나, 망토 소년 「조금」 + +### 패스 1 · 되돌림 +- 확인 차례: ① 얼굴 표정 비어 있음(캐릭터, 관객) 아니오 · ① 엘프 용사 닮음(닮은꼴) 아니오(「조금」) · ① 피규어 119줄(사진가) 예였지만 실측 y3~124 122줄이라 고칠 것 없음 · ② 머리와 몸 같은 회색 단(장인) 아니오 · ② 얼굴이 첫눈 못 받음(관객) 아니오 · ③ 목이 갈색(관객) 아니오 · ④ 흰 점 고아와 받침 테 끊김(장인) 아니오 · ④ 치마 세로 밴딩(사진가) 예 +- 고칠 것: ④ 결 · 치마 명암 띠가 곧은 세로로 나란함 · (20,72)~(46,80) +- 짚은 렌즈: 사진가 8점 · 「주름보다 밴딩으로 읽혀요」 +- 기대: pair-zoom 치마에서 그늘 경계가 허리에서 밑단으로 퍼지며 휘고, 가운데 주름이 밑단에서 넓어짐 +- 바뀐 LED: 정지 47 · 10초 50 · 노브 51 · 팔레트 22→22색 +- A/B: 장인 같음 · 캐릭터 같음(정순 새, 역순 같음) · 사진가 같음 · 관객 끝까지 안 받음(사진가가 같음이라 채택이 이미 막힘) +- 버린 판정: 잡기 실패 8(첫 판 여덟 가운데 일곱, 다시 받은 판 하나) +- 짚은 렌즈인 사진가가 「새」가 아니라서 되돌림 + +### 패스 2 · 되돌림 +- 확인 차례: 패스 1 비평의 다음 후보 ⑤ 지팡이 끝 접지(사진가) 예(패스 1 에서 받아 둔 답) +- 고칠 것: ⑤ 받침 · 지팡이 끝에 접지 그림자가 없고 부츠 앞코 뒤로 들어가 받침 앞 테까지 내려감, 끝에 흰 점 하나 · (54,117)~(55,119) +- 짚은 렌즈: 사진가 8점 · 「지팡이 끝 접지. 그림자가 없고」 +- 기대: pair-zoom 과 pair-led 오른쪽 아래에서 지팡이가 받침 윗면 위에 서고, 그 왼쪽에 어두운 그림자 한 덩어리, 흰 점 없음 +- 바뀐 LED: 정지 14 · 10초 14 · 노브 14 · 팔레트 22→22색 +- A/B: 장인 정순 새·역순 버림 · 캐릭터 정순 옛·역순 버림 · 사진가 정순 옛·역순 버림 · 관객 정순 버림·역순 같음 +- 버린 판정: 잡기 실패 4 +- 짚은 렌즈인 사진가가 정순에서 옛 판(받침 끝의 흰 점을 광택으로 읽음)이라 다시 받아도 「새」가 될 수 없어 되돌림 + +### 패스 3 +- 확인 차례: 패스 1 에서 묻지 않고 지나친 ③ K4 회색 끝(관객)부터 From 28f6162f4b908451b792522de57f83bb024c4b9f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 05:08:29 +0000 Subject: [PATCH 5/7] =?UTF-8?q?=ED=8C=A8=ED=84=B4=20=EC=97=B0=EA=B5=AC=208?= =?UTF-8?q?5=ED=8C=90:=20=ED=8C=A8=EC=8A=A4=203=20=EB=90=98=EB=8F=8C?= =?UTF-8?q?=EB=A6=BC=20=EA=B8=B0=EB=A1=9D,=20look-85,=20README=20=EA=B3=B5?= =?UTF-8?q?=EB=93=A4=EC=9D=B4=EA=B8=B0=20=EC=A4=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- incoming/pattern-study/README.md | 1 + incoming/pattern-study/craft/01-figure/log.md | 13 ++++++++++++- .../pattern-study/craft/01-figure/look-85.png | Bin 0 -> 63096 bytes 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 incoming/pattern-study/craft/01-figure/look-85.png diff --git a/incoming/pattern-study/README.md b/incoming/pattern-study/README.md index dae131e0..11c44e1b 100644 --- a/incoming/pattern-study/README.md +++ b/incoming/pattern-study/README.md @@ -14,6 +14,7 @@ | 패턴 | 작품 | 한 줄 | | --- | --- | --- | +| [Tamsel](patterns/tamsel.js) | 작품 1 | 밤거리 가스등에 불을 붙이는 견습 점등꾼이 받침 위에 한 손은 허리에, 한 손은 갈고리 끝에 불씨를 매단 놋쇠 장대에 얹고 서서 숨 쉬고 깜빡여요. | ## 추려 보기 diff --git a/incoming/pattern-study/craft/01-figure/log.md b/incoming/pattern-study/craft/01-figure/log.md index 2f923760..6e595e8f 100644 --- a/incoming/pattern-study/craft/01-figure/log.md +++ b/incoming/pattern-study/craft/01-figure/log.md @@ -26,5 +26,16 @@ - 버린 판정: 잡기 실패 4 - 짚은 렌즈인 사진가가 정순에서 옛 판(받침 끝의 흰 점을 광택으로 읽음)이라 다시 받아도 「새」가 될 수 없어 되돌림 -### 패스 3 +### 패스 3 · 되돌림 - 확인 차례: 패스 1 에서 묻지 않고 지나친 ③ K4 회색 끝(관객)부터 +- 확인: ③ K4 회색 끝(관객) 아니오 · ⑦ K1 테두리만 바뀜(관객) 아니오 → 남은 후보 없음, 비평을 새로 받음 +- 비평 2: 장인 6 · 캐릭터 7 · 사진가 8 · 관객 7 · 블라인드 읽기 2/3(성격을 「차분」으로 읽음) · 닮은꼴 「조금」 둘 +- 확인 차례: ① 얼굴이 첫눈 못 받음(관객) 아니오 · ① 표정이 무덤덤(블라인드 읽기) 예 +- 고칠 것: ① 얼굴과 표정 · 눈꺼풀이 홍채를 납작하게 덮고 입이 평평해 무덤덤하게 읽힘 · (32,22)~(44,36) +- 짚은 렌즈: 블라인드 읽기 2/3 · 「차분하고 아기자기한」, 캐릭터 7점의 조건 글 「무덤덤하고 느긋한 기색」 +- 기대: pair-zoom 과 pair-led 얼굴에서 눈이 동그랗게 뜨이고 한쪽 눈썹이 올라가며 입꼬리가 한쪽으로 올라감. 블라인드 읽기 성격이 맞음 +- 바뀐 LED: 정지 33 · 10초 53 · 노브 165(디테일 컷이 얼굴을 2배로 보여서) · 팔레트 22→22색 +- A/B: 장인 버림(정순·역순 두 번씩 잡기 실패) · 캐릭터 정순 버림·역순 새 · 사진가 새 · 관객 같음 +- 버린 판정: 잡기 실패 6 +- 새 판 블라인드 읽기: 「차분하고 당당한」 · 카드 2/3(성격 틀림)으로 그대로라 (가)를 못 채워 되돌림 +- 되돌림이 세 번 이어져 바퀴를 일찍 닫음 diff --git a/incoming/pattern-study/craft/01-figure/look-85.png b/incoming/pattern-study/craft/01-figure/look-85.png new file mode 100644 index 0000000000000000000000000000000000000000..524fc634daf65e03ffc2f9d988518c6cc0d44056 GIT binary patch literal 63096 zcmagG2|Sc*8$WIfg|r+>66&-GC5>j1<+P}iR43~gODCDZ%rFs=y?vwYAWUgFDa;U$ z8QH00$uf>)G&9zO!Vp3T|LYl4=l%aazu)_OUejUbnftk~?R#C<_qwkfIkZn}984~s24n%)*FFOWHS zd2`6fUi#bYtzC~y+y)}<$i31$y>_{CX6L>ueOLEZ8y{Lv+Hs#n8mWrwiVe6Q+i
l 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 literal 0 HcmV?d00001 From cacd33782694f98fb95deae67001d0d1c9a4124a Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 05:11:21 +0000 Subject: [PATCH 6/7] =?UTF-8?q?=ED=8C=A8=ED=84=B4=20=EC=97=B0=EA=B5=AC=208?= =?UTF-8?q?5=ED=8C=90:=20=EB=B0=94=ED=80=B4=20=EB=81=9D=20=EB=91=90=20?= =?UTF-8?q?=EB=B2=88=20=EC=B1=84=EC=A0=90=EA=B3=BC=20=EB=B8=94=EB=9D=BC?= =?UTF-8?q?=EC=9D=B8=EB=93=9C=20=EC=9D=BD=EA=B8=B0=20=EA=B8=B0=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- incoming/pattern-study/craft/01-figure/log.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/incoming/pattern-study/craft/01-figure/log.md b/incoming/pattern-study/craft/01-figure/log.md index 6e595e8f..506310eb 100644 --- a/incoming/pattern-study/craft/01-figure/log.md +++ b/incoming/pattern-study/craft/01-figure/log.md @@ -39,3 +39,10 @@ - 버린 판정: 잡기 실패 6 - 새 판 블라인드 읽기: 「차분하고 당당한」 · 카드 2/3(성격 틀림)으로 그대로라 (가)를 못 채워 되돌림 - 되돌림이 세 번 이어져 바퀴를 일찍 닫음 + +## 바퀴 끝 +- 두 번 채점: 장인 6,7 · 캐릭터 7,7 · 사진가 8,7 · 관객 8,7 · 블라인드 읽기 3/3 +- 장거리 A/B: 길 a 의 첫 바퀴라 건너뜀 +- 닮은꼴: 초록 모자의 엘프 용사 「조금」, 자라지 않는 소년 「조금」(이 바퀴 네 번 가운데 엘프 용사는 「가깝다」 한 번, 「조금」 세 번) +- 걸린 멈춤: 되돌림 세 번 이어짐(패스 1·2·3) +- 창작자에게: 판정 넷이 다 청록 모자와 튜닉에서 초록 모자 엘프 용사를 떠올렸어요. 카드의 코트와 모자 색은 창작자 글로만 바꿀 수 있어서 남겨요. From 08406dc16b64de691a873a68ef62d7bb1b55bc9f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 1 Nov 2026 06:15:48 +0000 Subject: [PATCH 7/7] =?UTF-8?q?=ED=8C=A8=ED=84=B4=20=EC=97=B0=EA=B5=AC=208?= =?UTF-8?q?5=ED=8C=90:=20index.html=20=EB=8B=A4=EC=8B=9C=20=EC=A7=93?= =?UTF-8?q?=EA=B8=B0=20(Tamsel)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- incoming/pattern-study/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/incoming/pattern-study/index.html b/incoming/pattern-study/index.html index 3311972a..1a39dfea 100644 --- a/incoming/pattern-study/index.html +++ b/incoming/pattern-study/index.html @@ -210,8 +210,8 @@

패턴 연구

- - + +