@hatiolab/figure-model 0.1.76 → 0.1.78
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/CHANGELOG.md +12 -0
- package/README.md +60 -138
- package/dist/index.d.ts +1 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -26
- package/dist/index.js.map +1 -1
- package/dist/v3-asset-types.d.ts +1 -2
- package/dist/v3-asset-types.d.ts.map +1 -1
- package/dist/v3-asset.js +1 -1
- package/dist/v3-asset.js.map +1 -1
- package/dist/v3-authoring-actions.d.ts +9 -12
- package/dist/v3-authoring-actions.d.ts.map +1 -1
- package/dist/v3-authoring-actions.js +4 -5
- package/dist/v3-authoring-actions.js.map +1 -1
- package/dist/v3-capabilities.js +4 -1
- package/dist/v3-capabilities.js.map +1 -1
- package/dist/v3-cost.d.ts.map +1 -1
- package/dist/v3-cost.js +3 -5
- package/dist/v3-cost.js.map +1 -1
- package/dist/v3-create.d.ts +1 -1
- package/dist/v3-create.d.ts.map +1 -1
- package/dist/v3-examples.js +1 -1
- package/dist/v3-gate.d.ts +7 -8
- package/dist/v3-gate.d.ts.map +1 -1
- package/dist/v3-gate.js +11 -14
- package/dist/v3-gate.js.map +1 -1
- package/dist/v3-graph.d.ts +1 -2
- package/dist/v3-graph.d.ts.map +1 -1
- package/dist/v3-graph.js +5 -7
- package/dist/v3-graph.js.map +1 -1
- package/dist/v3-instance-size.d.ts +3 -5
- package/dist/v3-instance-size.d.ts.map +1 -1
- package/dist/v3-instance-size.js +2 -4
- package/dist/v3-instance-size.js.map +1 -1
- package/dist/v3-kernel-version.d.ts +1 -1
- package/dist/v3-kernel-version.js +1 -1
- package/dist/v3-part-edit.d.ts +4 -5
- package/dist/v3-part-edit.d.ts.map +1 -1
- package/dist/v3-part-edit.js +2 -2
- package/dist/v3-part-edit.js.map +1 -1
- package/dist/v3-proposal.js +1 -1
- package/dist/v3-proposal.js.map +1 -1
- package/dist/v3-release-contract.js +1 -1
- package/dist/v3-release-contract.js.map +1 -1
- package/dist/v3-score.d.ts +4 -5
- package/dist/v3-score.d.ts.map +1 -1
- package/dist/v3-score.js +7 -8
- package/dist/v3-score.js.map +1 -1
- package/dist/v3-words.d.ts +105 -0
- package/dist/v3-words.d.ts.map +1 -0
- package/dist/v3-words.js +107 -0
- package/dist/v3-words.js.map +1 -0
- package/docs/assembly-constraints-v3.md +13 -23
- package/docs/v3-asset-persistence.md +4 -4
- package/docs/v3-common-kernel-experiment.md +1 -1
- package/docs/v3-core-semantics.md +3 -3
- package/docs/v3-cutover.md +5 -3
- package/docs/v3-design.md +13 -26
- package/docs/v3-editor-integration.md +2 -2
- package/docs/v3-full-conveyor-validation.md +3 -3
- package/docs/v3-layout-system.md +1 -1
- package/docs/v3-minimal-model.md +0 -1
- package/docs/v3-motion-contract.md +21 -56
- package/docs/v3-runtime-extraction.md +7 -7
- package/docs/v3-sample-validation-expanded.md +1 -1
- package/docs/v3-sample-validation.md +1 -1
- package/docs/v3-shape-dimension-contract.md +23 -57
- package/docs/v3-status.md +5 -5
- package/docs/v3-storage-integration.md +4 -4
- package/package.json +2 -20
- package/dist/blueprint-shape.d.ts +0 -10
- package/dist/blueprint-shape.d.ts.map +0 -1
- package/dist/blueprint-shape.js +0 -194
- package/dist/blueprint-shape.js.map +0 -1
- package/dist/blueprint.d.ts +0 -73
- package/dist/blueprint.d.ts.map +0 -1
- package/dist/blueprint.js +0 -388
- package/dist/blueprint.js.map +0 -1
- package/dist/cost-chart.d.ts +0 -35
- package/dist/cost-chart.d.ts.map +0 -1
- package/dist/cost-chart.js +0 -150
- package/dist/cost-chart.js.map +0 -1
- package/dist/cost.d.ts +0 -162
- package/dist/cost.d.ts.map +0 -1
- package/dist/cost.js +0 -194
- package/dist/cost.js.map +0 -1
- package/dist/gate.d.ts +0 -65
- package/dist/gate.d.ts.map +0 -1
- package/dist/gate.js +0 -284
- package/dist/gate.js.map +0 -1
- package/dist/grouping.d.ts +0 -121
- package/dist/grouping.d.ts.map +0 -1
- package/dist/grouping.js +0 -224
- package/dist/grouping.js.map +0 -1
- package/dist/keys.d.ts +0 -45
- package/dist/keys.d.ts.map +0 -1
- package/dist/keys.js +0 -84
- package/dist/keys.js.map +0 -1
- package/dist/origin.d.ts +0 -33
- package/dist/origin.d.ts.map +0 -1
- package/dist/origin.js +0 -46
- package/dist/origin.js.map +0 -1
- package/dist/release-contract.d.ts +0 -38
- package/dist/release-contract.d.ts.map +0 -1
- package/dist/release-contract.js +0 -246
- package/dist/release-contract.js.map +0 -1
- package/dist/sizing.d.ts +0 -231
- package/dist/sizing.d.ts.map +0 -1
- package/dist/sizing.js +0 -550
- package/dist/sizing.js.map +0 -1
- package/dist/types.d.ts +0 -1233
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -547
- package/dist/types.js.map +0 -1
- package/dist/v3-from-v2.d.ts +0 -203
- package/dist/v3-from-v2.d.ts.map +0 -1
- package/dist/v3-from-v2.js +0 -2053
- package/dist/v3-from-v2.js.map +0 -1
- package/dist/v3-mesh-compare.d.ts +0 -24
- package/dist/v3-mesh-compare.d.ts.map +0 -1
- package/dist/v3-mesh-compare.js +0 -55
- package/dist/v3-mesh-compare.js.map +0 -1
- package/dist/validate.d.ts +0 -7
- package/dist/validate.d.ts.map +0 -1
- package/dist/validate.js +0 -1119
- package/dist/validate.js.map +0 -1
- package/dist/visual-evidence.d.ts +0 -21
- package/dist/visual-evidence.d.ts.map +0 -1
- package/dist/visual-evidence.js +0 -52
- package/dist/visual-evidence.js.map +0 -1
- package/docs/design.md +0 -193
- package/docs/format-survey.md +0 -108
- package/docs/format.md +0 -704
- package/docs/sizing.md +0 -183
- package/docs/validation.md +0 -357
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
DELETED
|
@@ -1,547 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*
|
|
4
|
-
* Figure 계약 — 저작 결과(원본)와 씬이 소비하는 산출물(청사진)의 형식.
|
|
5
|
-
*
|
|
6
|
-
* **이 모듈은 의존이 없다.** things-scene 의 Component·THREE 를 쓰지 않는 순수
|
|
7
|
-
* 데이터 정의이므로, 서버·클라이언트·저작도구가 모두 같은 형식을 본다. 필요하면
|
|
8
|
-
* 별도 패키지로 떼어낼 수 있다.
|
|
9
|
-
*
|
|
10
|
-
* 형식은 두 가지다.
|
|
11
|
-
*
|
|
12
|
-
* FigureSource 저작 결과. 편집 가능한 원본. DB 에 저장된다.
|
|
13
|
-
* FigureBlueprint 씬이 렌더링하는 형태. 원본에서 파생되는 캐시. 저장하지 않는다.
|
|
14
|
-
*
|
|
15
|
-
* 청사진은 2D 와 3D 를 한 구조로 다룬다 — 재질별로 묶고(`groups`), 3D 는 그
|
|
16
|
-
* 묶음의 geometry 를 합쳐 draw call 을 줄이고, 2D 는 윤곽을 합쳐 `fill()` 호출을
|
|
17
|
-
* 줄인다. 병목이 양쪽 다 "묶음 수"이므로 같은 병합으로 양쪽이 함께 이득을 본다.
|
|
18
|
-
*
|
|
19
|
-
* 설계 문서: things-scene/docs/plans/figure-blueprint.md
|
|
20
|
-
*/
|
|
21
|
-
/** 저작에 쓰는 프리미티브. mesh 계열과 extrude 계열로 나뉜다. */
|
|
22
|
-
export const PRIMITIVE_KINDS = ['cube', 'wall', 'cylinder', 'sphere', 'rect', 'polygon'];
|
|
23
|
-
/** extrude 계열은 2D 단면이 필요하다. */
|
|
24
|
-
export const EXTRUDE_PRIMITIVES = ['rect', 'polygon'];
|
|
25
|
-
/** mesh 계열은 치수만으로 선다. 분할 수를 갖는다. */
|
|
26
|
-
export const MESH_PRIMITIVES = ['cube', 'wall', 'cylinder', 'sphere'];
|
|
27
|
-
/** 분할 수를 갖는 프리미티브 — 곡면이 있는 것만. */
|
|
28
|
-
export const SEGMENTED_PRIMITIVES = ['cylinder', 'sphere'];
|
|
29
|
-
/**
|
|
30
|
-
* 단면이 **원**인 프리미티브.
|
|
31
|
-
*
|
|
32
|
-
* 축마다 다른 배율을 받으면 타원이 된다. 그래서 이것들은 합친 묶음에 들지 못한다 —
|
|
33
|
-
* 합친 형상은 변환을 하나만 받는다. 곡면 부품 하나가 draw call 하나다.
|
|
34
|
-
*/
|
|
35
|
-
export const CURVED_PRIMITIVES = ['cylinder', 'sphere'];
|
|
36
|
-
/**
|
|
37
|
-
* 재질 슬롯. extrude 계열의 재질 인덱스가 둘로 정해져 있다.
|
|
38
|
-
* `threed/real-object-extrude.ts:105-111` — 0 = cap(fillStyle), 1 = side(strokeStyle)
|
|
39
|
-
*/
|
|
40
|
-
export const MATERIAL_SLOTS = ['cap', 'side'];
|
|
41
|
-
/** 재질 프리셋. `threed/material-3d.ts:9` 의 preset 과 같은 집합. */
|
|
42
|
-
export const MATERIAL_PRESETS = ['default', 'metal', 'glass', 'plastic', 'wood', 'ceramic', 'rubber'];
|
|
43
|
-
/**
|
|
44
|
-
* 저작이 고를 수 있는 능력 — **씬이 실제로 조립할 수 있는 것만 있다.**
|
|
45
|
-
*
|
|
46
|
-
* `MATERIAL_PRESETS` 와 같은 갈래다. 형식이 목록을 선언하고 씬이 그것을 소비한다.
|
|
47
|
-
*
|
|
48
|
-
* ## 왜 목록이 형식에 있나
|
|
49
|
-
*
|
|
50
|
-
* 한동안 things-scene 에만 있었다. 그래서 `validate` 가 이름을 못 봤고, AI 가 낸
|
|
51
|
-
* `capabilities: ['hoist']` 가 **검증을 지나고 발행을 지나** 렌더링에서 죽었다. 게이트는
|
|
52
|
-
* 사실이 사는 곳에 있어야 한다 — 형식이 무엇이 성립하는 도형인지 판정하는 자리이므로
|
|
53
|
-
* 여기다(ADR-0051 ④).
|
|
54
|
-
*
|
|
55
|
-
* `PlacementSurface`·`CarrierLine` 같은 이름은 씬에 metadata 는 있어도 mixin factory 가
|
|
56
|
-
* 없다. 구현이 있어야 성립하는 계약이라, 이름만 적어 지게 하면 「선언은 있는데 동작이
|
|
57
|
-
* 없는」 것이 된다. **여기 있는 넷은 씬에 조립할 것이 있다.**
|
|
58
|
-
*
|
|
59
|
-
* ## 사다리
|
|
60
|
-
*
|
|
61
|
-
* Capacity 자리를 갖는다
|
|
62
|
-
* Holdable 담긴 것을 함께 들고 그린다
|
|
63
|
-
* Transferable 자리를 잡아 두고 넘겨받는다 — `Capacity` 가 있어야 자리를 찾는다
|
|
64
|
-
* FlowNode 흐름의 마디다. 위의 셋을 스스로 포함한다
|
|
65
|
-
*/
|
|
66
|
-
export const FIGURE_CAPABILITIES = ['Capacity', 'Holdable', 'Transferable', 'FlowNode'];
|
|
67
|
-
/**
|
|
68
|
-
* 혼자 설 수 없는 능력 — 이름 → 그 중 **하나라도** 함께 있어야 하는 것들.
|
|
69
|
-
*
|
|
70
|
-
* `Transferable` 은 자리를 찾는 일을 `Capacity` 에게 맡긴다. 혼자 적으면 씬이 조립할 때
|
|
71
|
-
* 던지는데, 그때는 이미 발행된 뒤다. 모르는 이름과 같은 갈래라 같은 자리에서 본다.
|
|
72
|
-
*/
|
|
73
|
-
export const CAPABILITY_NEEDS = Object.freeze({
|
|
74
|
-
Transferable: ['Capacity', 'FlowNode']
|
|
75
|
-
});
|
|
76
|
-
/**
|
|
77
|
-
* 크기 반응 규칙 — 인스턴스 크기가 바뀔 때 부품이 어떻게 변하는가.
|
|
78
|
-
*
|
|
79
|
-
* scale 비례 확대. 탱크 몸체 같은 단일 덩어리
|
|
80
|
-
* fixed 크기는 그대로, 자리만 따라간다. 모터·계기·노즐
|
|
81
|
-
* stretch 한 축만 늘어난다. 프레임·벨트·레일
|
|
82
|
-
* repeat 개수가 늘어난다. 롤러·선반 단 ← 새 geometry 가 생기지 않는다
|
|
83
|
-
*/
|
|
84
|
-
/** What `sizing` means when a part does not say. */
|
|
85
|
-
export const DEFAULT_SIZING = 'scale';
|
|
86
|
-
/**
|
|
87
|
-
* How many copies one repeat part may expand to.
|
|
88
|
-
*
|
|
89
|
-
* Every copy is a draw call, so an instance stretched far enough would grow
|
|
90
|
-
* without bound and one asset would eat the frame. Past this point the copies
|
|
91
|
-
* are too small to count anyway, so more of them changes nothing on screen.
|
|
92
|
-
*
|
|
93
|
-
* The renderer enforces the same number. It lives here because the report has
|
|
94
|
-
* to predict what the renderer will do -- things-scene used to keep its own
|
|
95
|
-
* copy of it.
|
|
96
|
-
*/
|
|
97
|
-
export const REPEAT_LIMIT = 100;
|
|
98
|
-
export const SIZING_RULES = ['scale', 'fixed', 'stretch', 'repeat'];
|
|
99
|
-
/**
|
|
100
|
-
* 3D 배치 기준면.
|
|
101
|
-
*
|
|
102
|
-
* floor 바닥 기준 (y=0 위에 서 있음. AGV, 로봇, 컨베이어, 파렛트 등)
|
|
103
|
-
* ceiling 천정 기준 (상단 레일/천정에 매달림. OHT, 호이스트 등)
|
|
104
|
-
* center 중심 기준 (공간 부유/중심 기준. 드론, 센서, 부유물 등)
|
|
105
|
-
*/
|
|
106
|
-
export const FIGURE_PLACEMENTS = ['floor', 'ceiling', 'center'];
|
|
107
|
-
/**
|
|
108
|
-
* 부품이 한 축에서 기준 상자의 **어느 면을 붙잡나**. 축마다 따로 정한다.
|
|
109
|
-
*
|
|
110
|
-
* scale **아무 면도 안 붙잡는다.** 상자와 함께 비례로 커진다
|
|
111
|
-
* min 아래(또는 왼쪽·뒤) 면에서 잰 거리를 지킨다
|
|
112
|
-
* center 자리는 비례로 따라가고 **크기는 지킨다**
|
|
113
|
-
* max 위(또는 오른쪽·앞) 면에서 잰 거리를 지킨다
|
|
114
|
-
* span **양쪽을 다 붙잡는다.** 가운데가 늘어나 사이를 채운다
|
|
115
|
-
*
|
|
116
|
-
* 붙잡는 면의 수로 읽으면 하나다 — 0 개면 상자와 함께 커지고, 1 개면 그 면에서 잰
|
|
117
|
-
* 거리를 지키고, 2 개면 사이를 채운다. 3D 도구의 나인슬라이스가 하는 일이고 여기서는
|
|
118
|
-
* 그것이 세 축으로 있다.
|
|
119
|
-
*
|
|
120
|
-
* ## `repeat` 의 축에서는 **줄이 어떻게 되는가**를 말한다
|
|
121
|
-
*
|
|
122
|
-
* 같은 「반복」이 두 가지다.
|
|
123
|
-
*
|
|
124
|
-
* 컨베이어의 롤러 길어지면 롤러가 **는다.** 한 칸 간격은 그대로다
|
|
125
|
-
* 셀트레이의 셀 커지면 셀이 **커진다.** 개수는 그 트레이가 몇 셀짜리냐이지
|
|
126
|
-
* 화면에 얼마나 크게 그렸느냐가 아니다
|
|
127
|
-
*
|
|
128
|
-
* 앞의 것이 `center`(줄이 상자를 채운다), 뒤의 것이 `scale`(줄이 상자와 함께 큰다)이다.
|
|
129
|
-
*
|
|
130
|
-
* ## 없던 것을 왜 더하나
|
|
131
|
-
*
|
|
132
|
-
* `sizing` 은 부품의 **크기**가 인스턴스를 어떻게 따라가는지만 말했다. **자리**는
|
|
133
|
-
* 언제나 비례였다. 그래서 시그널 타워를 3 배로 세우면 기둥은 늘어나는데 램프들은
|
|
134
|
-
* 기둥 위 공중으로 흩어졌다 — 저작한 자리 512 가 1536 이 되고, 그 사이의 틈 100 이
|
|
135
|
-
* 300 이 되기 때문이다.
|
|
136
|
-
*
|
|
137
|
-
* 1× foot 0..90 · pole 85..705 · bracket 703..747 · … · cap 1037..1087
|
|
138
|
-
* 3× foot 90..180 · pole 255..2115 · bracket 2153..2197 · … · cap 3161..3211
|
|
139
|
-
*
|
|
140
|
-
* 램프는 상자 안 어디쯤이 아니라 **기둥 꼭대기**에 붙어 있다. 형식에 그 말을 적을
|
|
141
|
-
* 자리가 없었다.
|
|
142
|
-
*
|
|
143
|
-
* ## 적지 않으면 **가까운 면**을 붙잡는다
|
|
144
|
-
*
|
|
145
|
-
* 상자의 위 절반에 저작한 것은 위를, 아래 절반에 저작한 것은 아래를 붙잡는다.
|
|
146
|
-
* 정확히 가운데면 `center` 다. 사람이 램프를 꼭대기 근처에 놓을 때 뜻하는 것이
|
|
147
|
-
* 그것이고, 그래서 표본 열넷 중 어느 것도 이 값을 적지 않고 제대로 선다.
|
|
148
|
-
*
|
|
149
|
-
* **적어 두면 `sizing` 을 이긴다 — `'scale'` 이어도 그렇다.** `sizing: 'scale'` 인 부품은
|
|
150
|
-
* *적지 않았을 때* 상자와 함께 커진다는 뜻이고, 축 하나에 `max` 를 적으면 그 축에서는 위 면에서
|
|
151
|
-
* 잰 거리를 지킨다. 한동안 이 자리에 「`scale` 인 부품에는 뜻이 없다」고 적혀 있었는데 코드와
|
|
152
|
-
* 달랐고(`anchorOf` 는 적힌 값을 먼저 돌려준다), 그 주석 때문에 저작 화면의 편집기가 잘못된 것
|
|
153
|
-
* 아니냐는 의심을 받았다.
|
|
154
|
-
*/
|
|
155
|
-
export const ANCHOR_RULES = [
|
|
156
|
-
'scale',
|
|
157
|
-
'min',
|
|
158
|
-
'center',
|
|
159
|
-
'max',
|
|
160
|
-
'span',
|
|
161
|
-
/*
|
|
162
|
-
다른 축의 배율을 따라간다 — **비율을 지킨다.**
|
|
163
|
-
|
|
164
|
-
드라이룸의 출입구가 그렇다. 방을 키우면 문도 커져야 하지만 문은 문이라 **폭이
|
|
165
|
-
높이에 비례**해야 한다. `scale` 로 두면 폭이 제 축(x)을 따라가므로, 방을 폭으로만
|
|
166
|
-
늘리면 문이 넓어지기만 하고 높아지지 않는다.
|
|
167
|
-
|
|
168
|
-
anchor: { x: 'aspect-y', y: 'scale', z: 'max' }
|
|
169
|
-
|
|
170
|
-
자기 자신이나 또 다른 `aspect-` 축을 가리킬 수는 없다.
|
|
171
|
-
*/
|
|
172
|
-
'aspect-x',
|
|
173
|
-
'aspect-y',
|
|
174
|
-
'aspect-z'
|
|
175
|
-
];
|
|
176
|
-
/**
|
|
177
|
-
* 디테일 등급 — 이 형상을 얼마나 상세하게 만들 것인지 저작자가 밝히는 값.
|
|
178
|
-
*
|
|
179
|
-
* S 단순 표지 · 기둥처럼 형태가 단순한 것
|
|
180
|
-
* M 보통 대부분의 설비
|
|
181
|
-
* L 상세 화면의 주역이 되는 큰 설비
|
|
182
|
-
*
|
|
183
|
-
* 밝힌 등급이 부품 수 상한을 정한다. 그리고 성숙도가 그 등급에 걸맞게 만들어졌는지
|
|
184
|
-
* 본다. 등급만 L 로 올려 놓고 부품 셋으로 끝내면 밝힌 것과 만든 것이 다르다.
|
|
185
|
-
*
|
|
186
|
-
* **뜻을 여기 적어 두는 이유가 있다.** 한동안 이 값의 내용물이 부품 수 상한 하나뿐이었다.
|
|
187
|
-
* 그래서 "왜 L 인가" 에 답할 수가 없었고, 저작 화면도 등급이라는 글자만 보여 주었다.
|
|
188
|
-
*/
|
|
189
|
-
export const DETAIL_LEVELS = ['S', 'M', 'L'];
|
|
190
|
-
/** 등급별 부품 수 상한. */
|
|
191
|
-
export const PART_LIMIT = { S: 3, M: 8, L: 20 };
|
|
192
|
-
/**
|
|
193
|
-
* 채널이 무엇을 움직이나. **glTF 의 `target.path` 그대로다.**
|
|
194
|
-
*
|
|
195
|
-
* `weights` 는 없다 — 모프 타깃이 없는 형식이다.
|
|
196
|
-
*/
|
|
197
|
-
export const CHANNEL_PATHS = ['translation', 'rotation', 'scale'];
|
|
198
|
-
/** 키프레임 사이를 어떻게 잇나. glTF 의 `CUBICSPLINE` 은 없다 — 접선을 손으로 적을 형식이 아니다. */
|
|
199
|
-
export const INTERPOLATIONS = ['linear', 'step'];
|
|
200
|
-
export const AXES = ['x', 'y', 'z'];
|
|
201
|
-
/**
|
|
202
|
-
* How a joint moves its child part relative to the parent (ADR-0066).
|
|
203
|
-
*
|
|
204
|
-
* revolute turns about `axis` within `limits`, in degrees
|
|
205
|
-
* prismatic slides along `axis` within `limits`, in millimetres
|
|
206
|
-
* continuous turns about `axis` without limits, in degrees
|
|
207
|
-
*
|
|
208
|
-
* These are URDF's three moving joint types. A fixed attachment is not a joint: a part names its parent
|
|
209
|
-
* with `FigurePart.parent` and moves with it.
|
|
210
|
-
*/
|
|
211
|
-
export const JOINT_TYPES = ['revolute', 'prismatic', 'continuous'];
|
|
212
|
-
/** 텍스트를 언제 보이나. 표현 수단(sprite·overlay)은 런타임이 고른다. */
|
|
213
|
-
export const LABEL_WHENS = ['always', 'zoomed', 'selected', 'abnormal'];
|
|
214
|
-
/**
|
|
215
|
-
* 부품 재질.
|
|
216
|
-
*
|
|
217
|
-
* 색은 **팔레트 토큰**으로 둔다(`token`). 값을 굽으면 StyleKit 을 바꿔도 따라오지
|
|
218
|
-
* 않는다. 토큰 해석은 그리는 시점에 한다.
|
|
219
|
-
*/
|
|
220
|
-
/**
|
|
221
|
-
* 팔레트 밖 표면의 종류.
|
|
222
|
-
*
|
|
223
|
-
* 둘 다 **이름으로 가리키는 자산**이다. 같은 이름이면 같은 텍스처이고, 따라서 재질도
|
|
224
|
-
* 나눠 쓴다 — `MaterialBank` 가 텍스처를 spec 서명에 넣기 때문이다.
|
|
225
|
-
*/
|
|
226
|
-
export const SURFACE_KINDS = ['gradient', 'pattern'];
|
|
227
|
-
/**
|
|
228
|
-
* 부품이 맡는 역할.
|
|
229
|
-
*
|
|
230
|
-
* slot 보유물이 앉는 자리 (`Capacity.slots`)
|
|
231
|
-
* port-in 흐름이 들어오는 문 (`FlowNode.inboundPorts`)
|
|
232
|
-
* port-out 흐름이 나가는 문 (`FlowNode.outboundPorts`)
|
|
233
|
-
*/
|
|
234
|
-
export const PART_ROLES = ['slot', 'port-in', 'port-out'];
|
|
235
|
-
/**
|
|
236
|
-
* The source edition this format reads.
|
|
237
|
-
*
|
|
238
|
-
* - 1: `position.y` measured from the centre of the base box. Sources saved before the `version`
|
|
239
|
-
* field existed are edition 1 as well.
|
|
240
|
-
* - 2: `position.y` measured from the bottom face of the base box (ADR-0065).
|
|
241
|
-
*
|
|
242
|
-
* Only edition 2 is read. Older sources are refused with `source-version-unsupported` rather than
|
|
243
|
-
* read by the old rule, so a value never lives in two shapes at once.
|
|
244
|
-
*/
|
|
245
|
-
export const FIGURE_SOURCE_VERSION = 2;
|
|
246
|
-
// ─── 청사진 ────────────────────────────────────────────────────────────────
|
|
247
|
-
/** 청사진 스키마 버전. 형식이 바뀌면 올린다. */
|
|
248
|
-
export const BLUEPRINT_VERSION = 1;
|
|
249
|
-
/**
|
|
250
|
-
* 오류 코드 전부. **여기 없는 코드는 낼 수 없다** — `FigureError.code` 가 이 목록의
|
|
251
|
-
* 값으로 좁혀져 있어, 코드를 새로 쓰면 타입 검사가 막는다.
|
|
252
|
-
*
|
|
253
|
-
* 목록을 두는 이유는 소비처 때문이다. 오류를 사용자에게 보이는 쪽은 코드마다 문구와
|
|
254
|
-
* 처리를 정해야 하는데, 코드가 늘어난 것이 알려지지 않으면 그 대응이 빠진다. 뜻은
|
|
255
|
-
* `docs/validation.md` 에 있고, 문서와 이 목록이 어긋나면 테스트가 실패한다.
|
|
256
|
-
*/
|
|
257
|
-
export const ERROR_CODES = [
|
|
258
|
-
// 형태
|
|
259
|
-
'not-object',
|
|
260
|
-
'not-finite',
|
|
261
|
-
'not-positive',
|
|
262
|
-
/** 범위 밖 — 아래위가 정해진 값이 그 밖으로 나갔다. */
|
|
263
|
-
'out-of-range',
|
|
264
|
-
'not-integer',
|
|
265
|
-
'not-boolean',
|
|
266
|
-
'not-allowed',
|
|
267
|
-
// 원본의 필수 항목
|
|
268
|
-
'missing-type',
|
|
269
|
-
/* The source was written in an edition this format no longer reads. See FIGURE_SOURCE_VERSION. */
|
|
270
|
-
'source-version-unsupported',
|
|
271
|
-
'missing-base',
|
|
272
|
-
'missing-parts',
|
|
273
|
-
'bad-style-kit',
|
|
274
|
-
// 부품
|
|
275
|
-
'missing-name',
|
|
276
|
-
'duplicate-name',
|
|
277
|
-
'missing-transform',
|
|
278
|
-
'missing-position',
|
|
279
|
-
'missing-size',
|
|
280
|
-
'too-few-segments',
|
|
281
|
-
// 단면
|
|
282
|
-
'missing-shape-path',
|
|
283
|
-
'bad-shape-point',
|
|
284
|
-
'hollow-too-thick',
|
|
285
|
-
'hollow-not-convex',
|
|
286
|
-
'bad-aspect-axis',
|
|
287
|
-
// 재질
|
|
288
|
-
'missing-material',
|
|
289
|
-
'material-unresolvable',
|
|
290
|
-
// 크기 반응
|
|
291
|
-
'missing-repeat',
|
|
292
|
-
// 애니메이션
|
|
293
|
-
'missing-channels',
|
|
294
|
-
'unknown-channel-target',
|
|
295
|
-
'too-few-keys',
|
|
296
|
-
'keys-out-of-order',
|
|
297
|
-
// 예외 표면
|
|
298
|
-
'missing-surface-ref',
|
|
299
|
-
// 라벨
|
|
300
|
-
'missing-label-name',
|
|
301
|
-
'missing-label-source',
|
|
302
|
-
/*
|
|
303
|
-
능력. **이름의 뜻은 보지 않는다** — 주인이 things-scene 이다. 형식이 보는 것은 모양뿐이다:
|
|
304
|
-
문자열 배열인가, 빈 이름이 없나, 겹치지 않나.
|
|
305
|
-
*/
|
|
306
|
-
'bad-capability',
|
|
307
|
-
'duplicate-capability',
|
|
308
|
-
/* 부품이 진 능력의 닻 — 역할 이름 · accepts · capacity 의 모양 */
|
|
309
|
-
'bad-part-capability',
|
|
310
|
-
/*
|
|
311
|
-
파라미터의 범위. 인스턴스가 물리량으로 값을 주고받으므로 **무엇부터 무엇까지인지 없으면
|
|
312
|
-
값을 줄 수가 없다.** 단위도 마찬가지다 — 화면이 「1200」만 보이고 무슨 수인지 못 말한다.
|
|
313
|
-
*/
|
|
314
|
-
'missing-range',
|
|
315
|
-
'bad-range',
|
|
316
|
-
/* Hierarchy and joints (ADR-0066) */
|
|
317
|
-
'unknown-parent',
|
|
318
|
-
'parent-cycle',
|
|
319
|
-
'unknown-joint-child',
|
|
320
|
-
'joint-child-taken',
|
|
321
|
-
'bad-joint-axis'
|
|
322
|
-
];
|
|
323
|
-
/**
|
|
324
|
-
* 위반 코드 전부. 위반은 컴파일을 막지 않는다 — 저작 화면이 알려 주는 데 쓴다.
|
|
325
|
-
* 뜻과 한도는 `docs/validation.md` 에 있다.
|
|
326
|
-
*/
|
|
327
|
-
export const VIOLATION_CODES = [
|
|
328
|
-
'segments-off-preset',
|
|
329
|
-
'segments-ignored',
|
|
330
|
-
'repeat-ignored',
|
|
331
|
-
'keep-round-ignored',
|
|
332
|
-
'hollow-ignored',
|
|
333
|
-
'pivot-ignored',
|
|
334
|
-
'detail-level-missing',
|
|
335
|
-
'too-many-parts',
|
|
336
|
-
'too-many-independent-parts',
|
|
337
|
-
'too-many-material-groups',
|
|
338
|
-
'too-many-transparent',
|
|
339
|
-
'too-many-surface-textures',
|
|
340
|
-
/* 반복하는 자리에 칸 수를 적었다 — 배율이 정하므로 쓰이지 않는다 */
|
|
341
|
-
'capacity-with-repeat',
|
|
342
|
-
'too-many-always-labels',
|
|
343
|
-
/*
|
|
344
|
-
기준 상자 — 둘은 다른 결함이다. ADR-0044 (`operato-twin/design/04-decisions.md`).
|
|
345
|
-
|
|
346
|
-
`base` 는 **저작자가 선언하는 점유 부피**다. 감싸는 최소 상자가 아니다. 감싸는 상자면
|
|
347
|
-
계산해서 나오는 값이라 저작자가 쓸 것이 아니고, 의도를 담을 자리가 없어진다 — 컨베이어가
|
|
348
|
-
앞에 두어야 하는 접근 공간, 랙의 칸 pitch 가 그 의도다. **남는 여백은 선언이므로 보지
|
|
349
|
-
않는다.**
|
|
350
|
-
|
|
351
|
-
넘치는 것은 다르다. `base` 는 나누는 수다(`instanceScale = width/base.x`). 부품이 상자를
|
|
352
|
-
넘으면 **나누는 수가 거짓말을 하고**, 도면에 놓였을 때 크기와 높이가 둘 다 틀린다.
|
|
353
|
-
|
|
354
|
-
기준면에 안 닿는 것은 또 다른 결함이다. 「상자가 크다」가 아니라 **원점 규약이 어긋난
|
|
355
|
-
것**이다. 둘을 한 코드로 뭉치면 저작자가 상자를 키우는 쪽으로 고친다 — 실제로 필요한
|
|
356
|
-
것은 부품을 제자리로 옮기는 것인데.
|
|
357
|
-
*/
|
|
358
|
-
'part-outside-base',
|
|
359
|
-
'parts-off-placement-face',
|
|
360
|
-
/*
|
|
361
|
-
Type names. `type` is the stored identifier a drawing writes as `{ type, left, top, width, height }`,
|
|
362
|
-
so once released it cannot change. The rules hold back a release and leave draft saves alone:
|
|
363
|
-
trying something out before naming it is fine. These are two separate defects. One is a name of
|
|
364
|
-
the wrong shape; the other has the right shape but was never named by a person (chief architect
|
|
365
|
-
ruling, 2026-09-17).
|
|
366
|
-
*/
|
|
367
|
-
'type-not-identifier',
|
|
368
|
-
'type-is-placeholder'
|
|
369
|
-
];
|
|
370
|
-
/**
|
|
371
|
-
* 발행을 막는 위반 — ADR-0044 결정 ② (`operato-twin/design/04-decisions.md`).
|
|
372
|
-
*
|
|
373
|
-
* 나머지 위반은 알리기만 한다. 막으면 저작자가 우회하고, 숫자로 보여 주면 아낀다.
|
|
374
|
-
* 이 둘이 다른 것은 **소비처에게 하는 약속을 깨기 때문**이다 — `base` 가 배치 배율의 나누는
|
|
375
|
-
* 수라, 상자가 부피와 어긋난 도형은 도면에 놓이는 순간 크기와 높이가 둘 다 틀린다.
|
|
376
|
-
*
|
|
377
|
-
* **목록이 여기 있는 이유.** 이 사실을 두 곳이 쓴다 — 발행 관문이 거절할 때, 그리고 저작
|
|
378
|
-
* 화면이 「이건 고쳐야 나간다」를 뜻으로 보여 줄 때. 서버가 제 목록을 들면 화면은 그것을
|
|
379
|
-
* 알 길이 없어 전부 같은 「알림」으로 그리고, 저작자는 발행이 막힌 것을 **눌러 보고 나서야**
|
|
380
|
-
* 안다. 코드를 소유한 자리가 등급도 소유한다.
|
|
381
|
-
*
|
|
382
|
-
* The two type-name codes belong here for the same reason: a drawing records the type, so a released
|
|
383
|
-
* name is a promise to consumers.
|
|
384
|
-
*/
|
|
385
|
-
export const RELEASE_BLOCKING_VIOLATIONS = [
|
|
386
|
-
'part-outside-base',
|
|
387
|
-
'parts-off-placement-face',
|
|
388
|
-
'type-not-identifier',
|
|
389
|
-
'type-is-placeholder'
|
|
390
|
-
];
|
|
391
|
-
/**
|
|
392
|
-
* The shape of a `type`: `SCREAMING_SNAKE_CASE` starting with a capital, 3 to 32 characters.
|
|
393
|
-
*
|
|
394
|
-
* Capitals are the figure namespace. Built-in scene components use lower-case kebab names, so a figure
|
|
395
|
-
* that follows this shape cannot share a name with one.
|
|
396
|
-
*/
|
|
397
|
-
export const TYPE_PATTERN = /^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$/;
|
|
398
|
-
export const TYPE_LENGTH = { min: 3, max: 32 };
|
|
399
|
-
/**
|
|
400
|
-
* The temporary type a figure carries before anyone names it. The format owns it so that the code
|
|
401
|
-
* making it and the code recognising it follow one rule: the authoring screen makes it, the release
|
|
402
|
-
* gate and the AI tools recognise it.
|
|
403
|
-
*
|
|
404
|
-
* It passes the identifier pattern (`FIGURE_MTU10FWR`), so the shape check alone would not catch it.
|
|
405
|
-
*/
|
|
406
|
-
export function placeholderType(now = Date.now()) {
|
|
407
|
-
return `FIGURE_${now.toString(36).toUpperCase()}`;
|
|
408
|
-
}
|
|
409
|
-
const PLACEHOLDER_TYPE = /^FIGURE_[0-9A-Z]{8}$/;
|
|
410
|
-
/** Whether a type is the temporary name given before anyone names the figure. */
|
|
411
|
-
export function isPlaceholderType(type) {
|
|
412
|
-
return PLACEHOLDER_TYPE.test(type);
|
|
413
|
-
}
|
|
414
|
-
/** 이 위반이 발행을 막나. */
|
|
415
|
-
export function blocksRelease(code) {
|
|
416
|
-
return RELEASE_BLOCKING_VIOLATIONS.includes(code);
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* 맞대어 놓은 면은 정확히 0 만큼 떨어져 있다. 부동소수 나머지를 「닿았다」로 친다.
|
|
420
|
-
*
|
|
421
|
-
* 이 값을 키우면 실제로 떨어진 것도 붙은 것으로 읽히고, 줄이면 맞댄 면이 갈라진 것으로 읽힌다.
|
|
422
|
-
*
|
|
423
|
-
* **오차 상수는 하나여야 한다.** 발행 관문이 「덩어리가 갈라졌나」를 이 값으로 재고
|
|
424
|
-
* (`gate.ts`), 판정이 「부품이 상자를 벗어났나」와 「기준면에 닿았나」를 같은 값으로 잰다
|
|
425
|
-
* (`validate.ts`). 둘이 갈리면 한쪽이 닿았다고 한 면을 다른 쪽이 떨어졌다고 한다.
|
|
426
|
-
*/
|
|
427
|
-
export const SKIN = 0.5;
|
|
428
|
-
// ─── 정책 한도 ─────────────────────────────────────────────────────────────
|
|
429
|
-
/**
|
|
430
|
-
* 성능을 담보하는 한도.
|
|
431
|
-
*
|
|
432
|
-
* 로우폴리에서 병목은 삼각형이 아니라 **묶음 수**다. 값을 치르는 것은 놓은 개수가 아니라
|
|
433
|
-
* **한 화면에 보이는 개수 × 그 도형의 묶음 수**이고, 그 합이 4,000 쯤에서 60fps 가 깨진다
|
|
434
|
-
* (실측 2026-09-18 · Apple M5 · things-scene `test/browser/measure-figure-frames.mjs`).
|
|
435
|
-
*
|
|
436
|
-
* 도형 하나의 묶음은 이렇게 센다 — 두 칸이 그 둘을 각각 본다.
|
|
437
|
-
*
|
|
438
|
-
* 따로 변환되는 부품 `movingNames` → independentParts
|
|
439
|
-
* 실제로 그리는 횟수 `drawCallsOf` → materialGroups
|
|
440
|
-
*
|
|
441
|
-
* ⚠ 아래 `materialGroups` 는 **재는 것이 바뀌었는데 값이 안 바뀐 한도**다. 「재질·슬롯 조합 수」
|
|
442
|
-
* 로 정해진 3 인데, 지금 그 값과 견주는 것은 `drawCallsOf` 가 내는 실제 draw call 이고 그것은 더
|
|
443
|
-
* 큰 수다(`validate.ts` 의 `checkBudgets` 주석이 그 교체를 적어 두었다). 그래서 표본 47 개 중
|
|
444
|
-
* **35 개가 이 한도를 넘는다**(중간 6 · 상위 25% 12 · 최대 32). 막지는 않으므로 발행은 되지만,
|
|
445
|
-
* 거의 모든 도형에 붙는 알림은 정보가 아니다. 다시 재든 없애든 수석 아키텍트 판정을 기다리는
|
|
446
|
-
* 중이다(2026-09-19). `independentParts` 가 2 → 12 로 겪은 것과 같은 부류다.
|
|
447
|
-
*/
|
|
448
|
-
export const LIMITS = {
|
|
449
|
-
/**
|
|
450
|
-
* **V2 만 읽는다.** 실제 draw call 수와 견주던 옛 한도다(위 ⚠). V3 는 이것을 읽지 않는다 — draw call 은 숫자로만
|
|
451
|
-
* 보이고 한도에 대지 않으며(ADR-0051 보탬 09-19 판정 2), 값을 치르는 것은 한 화면의 총 묶음이라 그것은
|
|
452
|
-
* `screenInstances` 가 말한다(판정 1).
|
|
453
|
-
*/
|
|
454
|
-
materialGroups: 3,
|
|
455
|
-
/**
|
|
456
|
-
* **서로 다른 재질 수** — 팔레트 쪽 뜻(ADR-0051 보탬 09-19 판정 3). 그림의 가독성과 팔레트 규칙을 재는 천장이고,
|
|
457
|
-
* draw call 과 무관하다. `materialGroups` 가 두 뜻으로 읽히던 것 중 팔레트 쪽이 이 이름을 갖는다.
|
|
458
|
-
*/
|
|
459
|
-
distinctMaterials: 3,
|
|
460
|
-
/**
|
|
461
|
-
* 한 화면에 보이는 묶음 — 60fps 가 꺾이는 지점, **실측**(2026-09-18 · Apple M5 · things-scene
|
|
462
|
-
* `test/browser/measure-figure-frames.mjs`). 한 화면에 몇 대 들어가나는 이것을 도형 하나의 묶음 수로 나눈 값이다.
|
|
463
|
-
*/
|
|
464
|
-
groupsOnScreen: 4000,
|
|
465
|
-
/** 한 화면의 삼각형. **아직 안 쟀다** — 설계 문서의 목표치다. */
|
|
466
|
-
trianglesOnScreen: 500_000,
|
|
467
|
-
/**
|
|
468
|
-
* **한 화면에 같은 도형을 몇 대 놓을 수 있어야 하나** — V3 등급의 기준(수석 아키텍트 판정 2026-09-24, ADR-0051 보탬
|
|
469
|
-
* 09-19 판정 1 · 4). 따로 움직이는 부품 12 에 몸체 12 를 더한 도형(묶음 24)이 실측으로 166 대까지 60fps 로 돈다;
|
|
470
|
-
* 그만큼 놓을 수 있는 도형이 한도 안(C)이고, 두 배 넘게 놓이면 A 다. 고정된 draw call 한도는 도형이 커지면 다시
|
|
471
|
-
* 낡으므로 두지 않는다.
|
|
472
|
-
*/
|
|
473
|
-
screenInstances: 166,
|
|
474
|
-
/**
|
|
475
|
-
* **따로 변환되는 부품 수.** 구동 방식과 무관하다 — 값이 몰든 시각이 몰든, 제 변환을 지는
|
|
476
|
-
* 부품은 제 묶음으로 그린다(ADR-0051 결정 ③).
|
|
477
|
-
*
|
|
478
|
-
* 12 인 근거는 실측이다(2026-09-18, Apple M5, things-scene `test/browser/measure-figure-frames.mjs`).
|
|
479
|
-
* 놓는 개수가 값을 치르는 것이 아니라 **한 화면에 보이는 개수 × 그 도형의 묶음 수**가 치르고,
|
|
480
|
-
* 그 합이 4,000 쯤에서 60fps 가 깨진다. 독립 부품 12 에 몸체 묶음 12 를 더하면 도형 하나가
|
|
481
|
-
* 24 묶음이고, 한 화면에 166 대쯤까지 60fps 로 돈다(ADR-0051 보탬 09-19 판정 4 가 옛 「12 + 3 = 15
|
|
482
|
-
* 묶음, 260 대」를 고쳤다 — 몸체 묶음은 3 이 아니었다). 그만큼이면 현장 한 장면에 같은 종류를
|
|
483
|
-
* 늘어놓는 수를 담는다 — `screenInstances` 가 그 목표치다.
|
|
484
|
-
*
|
|
485
|
-
* 옛 이름은 `animatedParts` 였고 값이 2 였다 — 셈이 아니라 짐작이었다. 포크리프트의 `lift` 가
|
|
486
|
-
* 11 채널인 것이 현실이라, 2 는 실제로 쓰는 도형을 위반으로 만들었다.
|
|
487
|
-
*/
|
|
488
|
-
independentParts: 12,
|
|
489
|
-
/** 투명 재질. 정렬 비용이 크다. */
|
|
490
|
-
transparentMaterials: 1,
|
|
491
|
-
/**
|
|
492
|
-
* 팔레트 밖 표면(무늬·그라디언트)의 종류 수.
|
|
493
|
-
*
|
|
494
|
-
* 1 인 이유 — 라벨 판이나 표시창처럼 정말 그것이어야 하는 자리가 한 군데쯤은 있을 수
|
|
495
|
-
* 있다. 둘을 넘으면 단색 규칙과 싸우는 것이고, 텍스처마다 GPU 메모리를 쓴다.
|
|
496
|
-
*
|
|
497
|
-
* **재질 공유 때문이 아니다** — 이름으로 가리키는 자산이라 재질은 나눠 쓴다.
|
|
498
|
-
*/
|
|
499
|
-
surfaceTextures: 1,
|
|
500
|
-
/** 분할 수 하한 — 이보다 낮으면 형상이 아니다. */
|
|
501
|
-
minSegments: 3
|
|
502
|
-
};
|
|
503
|
-
/**
|
|
504
|
-
* 로우폴리 분할 수 프리셋. 자유 입력보다 이 중 하나를 권한다.
|
|
505
|
-
*
|
|
506
|
-
* ## 왜 목록을 좁게 두나
|
|
507
|
-
*
|
|
508
|
-
* **삼각형 때문이 아니다.** 삼각형은 사실상 공짜다 — 같은 draw call 에서 81만과
|
|
509
|
-
* 7,305만이 15.2ms 대 15.7ms 였다 [재봤음]. 좁게 두는 이유는 **형상 공유**다.
|
|
510
|
-
* 단위 곡면은 분할 수마다 하나씩 창고에 남으므로, 모두가 같은 몇 개만 쓰면 전체
|
|
511
|
-
* 자산이 그 몇 개를 나눠 쓴다.
|
|
512
|
-
*
|
|
513
|
-
* ## 24 · 32 를 더한 까닭
|
|
514
|
-
*
|
|
515
|
-
* 한동안 8 · 12 · 16 이었다. 근거는 도면 배율에서 잰 톱뷰 실루엣이었다 —
|
|
516
|
-
* 24 · 48 · 96px 에서 16 → 32 의 차이가 1.9 ~ 2.2% 로 거의 안 보였다.
|
|
517
|
-
*
|
|
518
|
-
* 그 측정이 덮지 못하는 자리가 있다. **저작면은 자산을 크게 띄우고, 바퀴처럼 둥근
|
|
519
|
-
* 면이 옆을 보는 부품이 있다.** n각형이 원에서 벗어나는 최대 거리는
|
|
520
|
-
* `r(1 − cos(π/n))` 이므로, 같은 다각형이 배율에 따라 정반대로 읽힌다.
|
|
521
|
-
*
|
|
522
|
-
* 분할 벗어남 도면(반지름 5px) 저작면(반지름 120px)
|
|
523
|
-
* 8 7.61% 0.38px 9.1px
|
|
524
|
-
* 12 3.41% 0.17px 4.1px
|
|
525
|
-
* 16 1.92% 0.10px 2.3px
|
|
526
|
-
* 24 0.86% 0.04px 1.0px
|
|
527
|
-
* 32 0.48% 0.02px 0.6px
|
|
528
|
-
*
|
|
529
|
-
* 저작면에서 2.3px 는 면이 또렷이 보이는 크기다. 한 단계마다 벗어남이 대략 반씩
|
|
530
|
-
* 줄어드는 사다리로 두면, 저작자가 「조금 더 둥글게」를 한 칸씩 고를 수 있다.
|
|
531
|
-
*
|
|
532
|
-
* 값 둘을 더해도 창고의 단위 곡면이 셋에서 다섯이 되는 것뿐이다.
|
|
533
|
-
*
|
|
534
|
-
* ## 48 을 더한 까닭
|
|
535
|
-
*
|
|
536
|
-
* **저작면이 자산을 크게 띄우기 때문**이다 — 렌즈나 축처럼 작고 둥근 것을 화면 절반만
|
|
537
|
-
* 하게 확대해 놓고 보면 32 에서도 각이 읽힌다. 지름 600px 에서 32 는 2.89px 벗어난다.
|
|
538
|
-
*
|
|
539
|
-
* 64 가 아니라 48 인 이유는 **사다리를 건너뛰지 않으려는 것**이다. 이 목록은 벗어남이
|
|
540
|
-
* 2.25배 · 1.78배로 번갈아 줄어드는 사다리이고, 32 다음 칸이 48 이다. 64 를 넣으면 거기서만
|
|
541
|
-
* 두 칸이 되어 「한 칸씩 더 둥글게」가 깨진다.
|
|
542
|
-
*
|
|
543
|
-
* 그리고 64 는 보이지 않는다 — 지름 600px 에서 48 이 1.28px, 64 가 0.72px 다. 1px 아래는
|
|
544
|
-
* 화면이 표현하지 못한다. 삼각형만 192 에서 256 으로 는다.
|
|
545
|
-
*/
|
|
546
|
-
export const SEGMENT_PRESETS = [8, 12, 16, 24, 32, 48];
|
|
547
|
-
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|