@vib3code/sdk 2.0.1

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.
Files changed (258) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/DOCS/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +34 -0
  3. package/DOCS/CI_TESTING.md +38 -0
  4. package/DOCS/CLI_ONBOARDING.md +75 -0
  5. package/DOCS/CONTROL_REFERENCE.md +64 -0
  6. package/DOCS/DEV_TRACK_ANALYSIS.md +77 -0
  7. package/DOCS/DEV_TRACK_PLAN_2026-01-07.md +42 -0
  8. package/DOCS/DEV_TRACK_SESSION_2026-01-31.md +220 -0
  9. package/DOCS/ENV_SETUP.md +189 -0
  10. package/DOCS/EXPORT_FORMATS.md +417 -0
  11. package/DOCS/GPU_DISPOSAL_GUIDE.md +21 -0
  12. package/DOCS/LICENSING_TIERS.md +275 -0
  13. package/DOCS/MASTER_PLAN_2026-01-31.md +570 -0
  14. package/DOCS/OBS_SETUP_GUIDE.md +98 -0
  15. package/DOCS/PROJECT_SETUP.md +66 -0
  16. package/DOCS/RENDERER_LIFECYCLE.md +40 -0
  17. package/DOCS/REPO_MANIFEST.md +121 -0
  18. package/DOCS/SESSION_014_PLAN.md +195 -0
  19. package/DOCS/SESSION_LOG_2026-01-07.md +56 -0
  20. package/DOCS/STRATEGIC_BLUEPRINT_2026-01-07.md +72 -0
  21. package/DOCS/SYSTEM_AUDIT_2026-01-30.md +738 -0
  22. package/DOCS/SYSTEM_INVENTORY.md +520 -0
  23. package/DOCS/TELEMETRY_EXPORTS.md +34 -0
  24. package/DOCS/WEBGPU_STATUS.md +38 -0
  25. package/DOCS/XR_BENCHMARKS.md +608 -0
  26. package/LICENSE +21 -0
  27. package/README.md +426 -0
  28. package/docs/.nojekyll +0 -0
  29. package/docs/01-dissolution_of_euclidean_hegemony.html +346 -0
  30. package/docs/02-hyperspatial_ego_death.html +346 -0
  31. package/docs/03-post_cartesian_sublime.html +346 -0
  32. package/docs/04-crystalline_void_meditation.html +346 -0
  33. package/docs/05-quantum_decoherence_ballet.html +346 -0
  34. package/docs/06-dissolution_of_euclidean_hegemony.html +346 -0
  35. package/docs/07-hyperspatial_ego_death.html +346 -0
  36. package/docs/08-post_cartesian_sublime.html +346 -0
  37. package/docs/09-crystalline_void_meditation.html +346 -0
  38. package/docs/10-quantum_decoherence_ballet.html +346 -0
  39. package/docs/11-dissolution_of_euclidean_hegemony.html +346 -0
  40. package/docs/12-hyperspatial_ego_death.html +346 -0
  41. package/docs/13-post_cartesian_sublime.html +346 -0
  42. package/docs/index.html +794 -0
  43. package/docs/test-hub.html +441 -0
  44. package/docs/url-state.js +102 -0
  45. package/docs/vib3-exports/01-quantum-quantum-tetrahedron-lattice.html +489 -0
  46. package/docs/vib3-exports/02-quantum-quantum-hypersphere-matrix.html +489 -0
  47. package/docs/vib3-exports/03-quantum-quantum-hypertetra-fractal.html +489 -0
  48. package/docs/vib3-exports/04-faceted-faceted-crystal-structure.html +407 -0
  49. package/docs/vib3-exports/05-faceted-faceted-klein-bottle.html +407 -0
  50. package/docs/vib3-exports/06-faceted-faceted-hypertetra-torus.html +407 -0
  51. package/docs/vib3-exports/07-holographic-holographic-wave-field.html +457 -0
  52. package/docs/vib3-exports/08-holographic-holographic-hypersphere-sphere.html +457 -0
  53. package/docs/vib3-exports/09-holographic-holographic-hypertetra-crystal.html +457 -0
  54. package/docs/vib3-exports/index.html +238 -0
  55. package/docs/webgpu-live.html +702 -0
  56. package/package.json +367 -0
  57. package/src/advanced/AIPresetGenerator.js +777 -0
  58. package/src/advanced/MIDIController.js +703 -0
  59. package/src/advanced/OffscreenWorker.js +1051 -0
  60. package/src/advanced/WebGPUCompute.js +1051 -0
  61. package/src/advanced/WebXRRenderer.js +680 -0
  62. package/src/agent/cli/AgentCLI.js +615 -0
  63. package/src/agent/cli/index.js +14 -0
  64. package/src/agent/index.js +73 -0
  65. package/src/agent/mcp/MCPServer.js +950 -0
  66. package/src/agent/mcp/index.js +9 -0
  67. package/src/agent/mcp/tools.js +548 -0
  68. package/src/agent/telemetry/EventStream.js +669 -0
  69. package/src/agent/telemetry/Instrumentation.js +618 -0
  70. package/src/agent/telemetry/TelemetryExporters.js +427 -0
  71. package/src/agent/telemetry/TelemetryService.js +464 -0
  72. package/src/agent/telemetry/index.js +52 -0
  73. package/src/benchmarks/BenchmarkRunner.js +381 -0
  74. package/src/benchmarks/MetricsCollector.js +299 -0
  75. package/src/benchmarks/index.js +9 -0
  76. package/src/benchmarks/scenes.js +259 -0
  77. package/src/cli/index.js +675 -0
  78. package/src/config/ApiConfig.js +88 -0
  79. package/src/core/CanvasManager.js +217 -0
  80. package/src/core/ErrorReporter.js +117 -0
  81. package/src/core/ParameterMapper.js +333 -0
  82. package/src/core/Parameters.js +396 -0
  83. package/src/core/RendererContracts.js +200 -0
  84. package/src/core/UnifiedResourceManager.js +370 -0
  85. package/src/core/VIB3Engine.js +636 -0
  86. package/src/core/renderers/FacetedRendererAdapter.js +32 -0
  87. package/src/core/renderers/HolographicRendererAdapter.js +29 -0
  88. package/src/core/renderers/QuantumRendererAdapter.js +29 -0
  89. package/src/core/renderers/RendererLifecycleManager.js +63 -0
  90. package/src/creative/ColorPresetsSystem.js +980 -0
  91. package/src/creative/ParameterTimeline.js +1061 -0
  92. package/src/creative/PostProcessingPipeline.js +1113 -0
  93. package/src/creative/TransitionAnimator.js +683 -0
  94. package/src/export/CSSExporter.js +226 -0
  95. package/src/export/CardGeneratorBase.js +279 -0
  96. package/src/export/ExportManager.js +580 -0
  97. package/src/export/FacetedCardGenerator.js +279 -0
  98. package/src/export/HolographicCardGenerator.js +543 -0
  99. package/src/export/LottieExporter.js +552 -0
  100. package/src/export/QuantumCardGenerator.js +315 -0
  101. package/src/export/SVGExporter.js +519 -0
  102. package/src/export/ShaderExporter.js +903 -0
  103. package/src/export/TradingCardGenerator.js +3055 -0
  104. package/src/export/TradingCardManager.js +181 -0
  105. package/src/export/VIB3PackageExporter.js +559 -0
  106. package/src/export/index.js +14 -0
  107. package/src/export/systems/TradingCardSystemFaceted.js +494 -0
  108. package/src/export/systems/TradingCardSystemHolographic.js +452 -0
  109. package/src/export/systems/TradingCardSystemQuantum.js +411 -0
  110. package/src/faceted/FacetedSystem.js +963 -0
  111. package/src/features/CollectionManager.js +433 -0
  112. package/src/gallery/CollectionManager.js +240 -0
  113. package/src/gallery/GallerySystem.js +485 -0
  114. package/src/geometry/GeometryFactory.js +314 -0
  115. package/src/geometry/GeometryLibrary.js +72 -0
  116. package/src/geometry/buffers/BufferBuilder.js +338 -0
  117. package/src/geometry/buffers/index.js +18 -0
  118. package/src/geometry/generators/Crystal.js +420 -0
  119. package/src/geometry/generators/Fractal.js +298 -0
  120. package/src/geometry/generators/KleinBottle.js +197 -0
  121. package/src/geometry/generators/Sphere.js +192 -0
  122. package/src/geometry/generators/Tesseract.js +160 -0
  123. package/src/geometry/generators/Tetrahedron.js +225 -0
  124. package/src/geometry/generators/Torus.js +304 -0
  125. package/src/geometry/generators/Wave.js +341 -0
  126. package/src/geometry/index.js +142 -0
  127. package/src/geometry/warp/HypersphereCore.js +211 -0
  128. package/src/geometry/warp/HypertetraCore.js +386 -0
  129. package/src/geometry/warp/index.js +57 -0
  130. package/src/holograms/HolographicVisualizer.js +1073 -0
  131. package/src/holograms/RealHolographicSystem.js +966 -0
  132. package/src/holograms/variantRegistry.js +69 -0
  133. package/src/integrations/FigmaPlugin.js +854 -0
  134. package/src/integrations/OBSMode.js +754 -0
  135. package/src/integrations/ThreeJsPackage.js +660 -0
  136. package/src/integrations/TouchDesignerExport.js +552 -0
  137. package/src/integrations/frameworks/Vib3React.js +591 -0
  138. package/src/integrations/frameworks/Vib3Svelte.js +654 -0
  139. package/src/integrations/frameworks/Vib3Vue.js +628 -0
  140. package/src/llm/LLMParameterInterface.js +240 -0
  141. package/src/llm/LLMParameterUI.js +577 -0
  142. package/src/math/Mat4x4.js +708 -0
  143. package/src/math/Projection.js +341 -0
  144. package/src/math/Rotor4D.js +637 -0
  145. package/src/math/Vec4.js +476 -0
  146. package/src/math/constants.js +164 -0
  147. package/src/math/index.js +68 -0
  148. package/src/math/projections.js +54 -0
  149. package/src/math/rotations.js +196 -0
  150. package/src/quantum/QuantumEngine.js +906 -0
  151. package/src/quantum/QuantumVisualizer.js +1103 -0
  152. package/src/reactivity/ReactivityConfig.js +499 -0
  153. package/src/reactivity/ReactivityManager.js +586 -0
  154. package/src/reactivity/SpatialInputSystem.js +1783 -0
  155. package/src/reactivity/index.js +93 -0
  156. package/src/render/CommandBuffer.js +465 -0
  157. package/src/render/MultiCanvasBridge.js +340 -0
  158. package/src/render/RenderCommand.js +514 -0
  159. package/src/render/RenderResourceRegistry.js +523 -0
  160. package/src/render/RenderState.js +552 -0
  161. package/src/render/RenderTarget.js +512 -0
  162. package/src/render/ShaderLoader.js +253 -0
  163. package/src/render/ShaderProgram.js +599 -0
  164. package/src/render/UnifiedRenderBridge.js +496 -0
  165. package/src/render/backends/WebGLBackend.js +1108 -0
  166. package/src/render/backends/WebGPUBackend.js +1409 -0
  167. package/src/render/commands/CommandBufferExecutor.js +607 -0
  168. package/src/render/commands/RenderCommandBuffer.js +661 -0
  169. package/src/render/commands/index.js +17 -0
  170. package/src/render/index.js +367 -0
  171. package/src/scene/Disposable.js +498 -0
  172. package/src/scene/MemoryPool.js +618 -0
  173. package/src/scene/Node4D.js +697 -0
  174. package/src/scene/ResourceManager.js +599 -0
  175. package/src/scene/Scene4D.js +540 -0
  176. package/src/scene/index.js +98 -0
  177. package/src/schemas/error.schema.json +84 -0
  178. package/src/schemas/extension.schema.json +88 -0
  179. package/src/schemas/index.js +214 -0
  180. package/src/schemas/parameters.schema.json +142 -0
  181. package/src/schemas/tool-pack.schema.json +44 -0
  182. package/src/schemas/tool-response.schema.json +127 -0
  183. package/src/shaders/common/fullscreen.vert.glsl +5 -0
  184. package/src/shaders/common/fullscreen.vert.wgsl +17 -0
  185. package/src/shaders/common/geometry24.glsl +65 -0
  186. package/src/shaders/common/geometry24.wgsl +54 -0
  187. package/src/shaders/common/rotation4d.glsl +85 -0
  188. package/src/shaders/common/rotation4d.wgsl +86 -0
  189. package/src/shaders/common/uniforms.glsl +44 -0
  190. package/src/shaders/common/uniforms.wgsl +48 -0
  191. package/src/shaders/faceted/faceted.frag.glsl +129 -0
  192. package/src/shaders/faceted/faceted.frag.wgsl +164 -0
  193. package/src/shaders/holographic/holographic.frag.glsl +406 -0
  194. package/src/shaders/holographic/holographic.frag.wgsl +185 -0
  195. package/src/shaders/quantum/quantum.frag.glsl +513 -0
  196. package/src/shaders/quantum/quantum.frag.wgsl +361 -0
  197. package/src/testing/ParallelTestFramework.js +519 -0
  198. package/src/testing/__snapshots__/exportFormats.test.js.snap +24 -0
  199. package/src/testing/exportFormats.test.js +8 -0
  200. package/src/testing/projections.test.js +14 -0
  201. package/src/testing/rotations.test.js +37 -0
  202. package/src/ui/InteractivityMenu.js +516 -0
  203. package/src/ui/StatusManager.js +96 -0
  204. package/src/ui/adaptive/renderers/webgpu/BufferLayout.ts +252 -0
  205. package/src/ui/adaptive/renderers/webgpu/PolytopeInstanceBuffer.ts +144 -0
  206. package/src/ui/adaptive/renderers/webgpu/TripleBufferedUniform.ts +170 -0
  207. package/src/ui/adaptive/renderers/webgpu/WebGPURenderer.ts +735 -0
  208. package/src/ui/adaptive/renderers/webgpu/index.ts +112 -0
  209. package/src/variations/VariationManager.js +431 -0
  210. package/src/viewer/AudioReactivity.js +505 -0
  211. package/src/viewer/CardBending.js +481 -0
  212. package/src/viewer/GalleryUI.js +832 -0
  213. package/src/viewer/ReactivityManager.js +590 -0
  214. package/src/viewer/TradingCardExporter.js +600 -0
  215. package/src/viewer/ViewerPortal.js +374 -0
  216. package/src/viewer/index.js +12 -0
  217. package/src/wasm/WasmLoader.js +296 -0
  218. package/src/wasm/index.js +132 -0
  219. package/tools/agentic/mcpTools.js +88 -0
  220. package/tools/cli/agent-cli.js +92 -0
  221. package/tools/export/formats.js +24 -0
  222. package/tools/math/rotation-baseline.mjs +64 -0
  223. package/tools/shader-sync-verify.js +937 -0
  224. package/tools/telemetry/manifestPipeline.js +141 -0
  225. package/tools/telemetry/telemetryEvents.js +35 -0
  226. package/types/adaptive-sdk.d.ts +185 -0
  227. package/types/advanced/AIPresetGenerator.d.ts +81 -0
  228. package/types/advanced/MIDIController.d.ts +100 -0
  229. package/types/advanced/OffscreenWorker.d.ts +82 -0
  230. package/types/advanced/WebGPUCompute.d.ts +52 -0
  231. package/types/advanced/WebXRRenderer.d.ts +77 -0
  232. package/types/advanced/index.d.ts +46 -0
  233. package/types/core/ErrorReporter.d.ts +50 -0
  234. package/types/core/VIB3Engine.d.ts +204 -0
  235. package/types/creative/ColorPresetsSystem.d.ts +91 -0
  236. package/types/creative/ParameterTimeline.d.ts +74 -0
  237. package/types/creative/PostProcessingPipeline.d.ts +109 -0
  238. package/types/creative/TransitionAnimator.d.ts +71 -0
  239. package/types/creative/index.d.ts +35 -0
  240. package/types/integrations/FigmaPlugin.d.ts +46 -0
  241. package/types/integrations/OBSMode.d.ts +74 -0
  242. package/types/integrations/ThreeJsPackage.d.ts +62 -0
  243. package/types/integrations/TouchDesignerExport.d.ts +36 -0
  244. package/types/integrations/Vib3React.d.ts +74 -0
  245. package/types/integrations/Vib3Svelte.d.ts +63 -0
  246. package/types/integrations/Vib3Vue.d.ts +55 -0
  247. package/types/integrations/index.d.ts +52 -0
  248. package/types/reactivity/SpatialInputSystem.d.ts +173 -0
  249. package/types/reactivity/index.d.ts +394 -0
  250. package/types/render/CommandBuffer.d.ts +169 -0
  251. package/types/render/RenderCommand.d.ts +312 -0
  252. package/types/render/RenderState.d.ts +279 -0
  253. package/types/render/RenderTarget.d.ts +254 -0
  254. package/types/render/ShaderProgram.d.ts +277 -0
  255. package/types/render/UnifiedRenderBridge.d.ts +143 -0
  256. package/types/render/WebGLBackend.d.ts +168 -0
  257. package/types/render/WebGPUBackend.d.ts +186 -0
  258. package/types/render/index.d.ts +141 -0
@@ -0,0 +1,314 @@
1
+ /**
2
+ * Geometry Factory
3
+ *
4
+ * Central factory for generating all 24 geometry variants.
5
+ * Uses the encoding formula: geometry = coreIndex * 8 + baseIndex
6
+ *
7
+ * Base Geometries (0-7):
8
+ * 0: Tetrahedron, 1: Hypercube, 2: Sphere, 3: Torus,
9
+ * 4: Klein Bottle, 5: Fractal, 6: Wave, 7: Crystal
10
+ *
11
+ * Core Types (0-2):
12
+ * 0: Base (geometries 0-7)
13
+ * 1: Hypersphere Core (geometries 8-15)
14
+ * 2: Hypertetrahedron Core (geometries 16-23)
15
+ */
16
+
17
+ // Base geometry generators
18
+ import generateTesseract from './generators/Tesseract.js';
19
+ import { generate5Cell, generateTetrahedronLattice } from './generators/Tetrahedron.js';
20
+ import generateHypersphere from './generators/Sphere.js';
21
+ import { generateCliffordTorus, generate4DTorus } from './generators/Torus.js';
22
+ import generateKleinBottle from './generators/KleinBottle.js';
23
+ import generateFractal from './generators/Fractal.js';
24
+ import generateWave from './generators/Wave.js';
25
+ import generateCrystal from './generators/Crystal.js';
26
+
27
+ // Warp functions
28
+ import { warpHypersphereCore } from './warp/HypersphereCore.js';
29
+ import { warpHypertetraCore } from './warp/HypertetraCore.js';
30
+
31
+ /**
32
+ * Base geometry names
33
+ */
34
+ export const BASE_GEOMETRIES = [
35
+ 'tetrahedron',
36
+ 'hypercube',
37
+ 'sphere',
38
+ 'torus',
39
+ 'klein_bottle',
40
+ 'fractal',
41
+ 'wave',
42
+ 'crystal'
43
+ ];
44
+
45
+ /**
46
+ * Core type names
47
+ */
48
+ export const CORE_TYPES = [
49
+ 'base',
50
+ 'hypersphere',
51
+ 'hypertetrahedron'
52
+ ];
53
+
54
+ /**
55
+ * Decode geometry index to base and core indices
56
+ * @param {number} geometryIndex - Geometry index (0-23)
57
+ * @returns {object} { baseIndex, coreIndex }
58
+ */
59
+ export function decodeGeometry(geometryIndex) {
60
+ const index = Math.max(0, Math.min(23, Math.floor(geometryIndex)));
61
+ const coreIndex = Math.floor(index / 8);
62
+ const baseIndex = index % 8;
63
+ return { baseIndex, coreIndex };
64
+ }
65
+
66
+ /**
67
+ * Encode base and core indices to geometry index
68
+ * @param {number} baseIndex - Base geometry index (0-7)
69
+ * @param {number} coreIndex - Core type index (0-2)
70
+ * @returns {number} Geometry index (0-23)
71
+ */
72
+ export function encodeGeometry(baseIndex, coreIndex) {
73
+ return coreIndex * 8 + baseIndex;
74
+ }
75
+
76
+ /**
77
+ * Get geometry name from index
78
+ * @param {number} geometryIndex
79
+ * @returns {string}
80
+ */
81
+ export function getGeometryName(geometryIndex) {
82
+ const { baseIndex, coreIndex } = decodeGeometry(geometryIndex);
83
+ const baseName = BASE_GEOMETRIES[baseIndex];
84
+ const coreName = CORE_TYPES[coreIndex];
85
+
86
+ if (coreIndex === 0) {
87
+ return baseName;
88
+ }
89
+ return `${baseName}_${coreName}`;
90
+ }
91
+
92
+ /**
93
+ * Get all 24 geometry names
94
+ * @returns {string[]}
95
+ */
96
+ export function getAllGeometryNames() {
97
+ return Array.from({ length: 24 }, (_, i) => getGeometryName(i));
98
+ }
99
+
100
+ /**
101
+ * Generate base geometry by index
102
+ * @param {number} baseIndex - Base geometry index (0-7)
103
+ * @param {object} options - Generation options
104
+ * @returns {object} Geometry
105
+ */
106
+ export function generateBaseGeometry(baseIndex, options = {}) {
107
+ const {
108
+ scale = 1,
109
+ density = 24,
110
+ type = 'default'
111
+ } = options;
112
+
113
+ switch (baseIndex) {
114
+ case 0: // Tetrahedron (5-cell)
115
+ return generate5Cell(scale);
116
+
117
+ case 1: // Hypercube (Tesseract)
118
+ return generateTesseract(scale);
119
+
120
+ case 2: // Sphere (Hypersphere)
121
+ return generateHypersphere(scale, density);
122
+
123
+ case 3: // Torus (Clifford Torus)
124
+ return generateCliffordTorus(scale, scale * 0.3, density);
125
+
126
+ case 4: // Klein Bottle
127
+ return generateKleinBottle(scale, density);
128
+
129
+ case 5: // Fractal
130
+ return generateFractal(type === 'default' ? 'sierpinski' : type, 2, scale);
131
+
132
+ case 6: // Wave
133
+ return generateWave(type === 'default' ? 'standing' : type, {
134
+ amplitude: scale * 0.5,
135
+ frequency: 2,
136
+ segments: density,
137
+ radius: scale
138
+ });
139
+
140
+ case 7: // Crystal
141
+ return generateCrystal(type === 'default' ? '16cell' : type, scale);
142
+
143
+ default:
144
+ return generateTesseract(scale);
145
+ }
146
+ }
147
+
148
+ /**
149
+ * Apply core warp to geometry
150
+ * @param {object} geometry - Base geometry
151
+ * @param {number} coreIndex - Core type index (0-2)
152
+ * @param {object} options - Warp options
153
+ * @returns {object} Warped geometry (or original if coreIndex is 0)
154
+ */
155
+ export function applyWarp(geometry, coreIndex, options = {}) {
156
+ switch (coreIndex) {
157
+ case 0: // Base - no warp
158
+ return geometry;
159
+
160
+ case 1: // Hypersphere
161
+ return warpHypersphereCore(geometry, {
162
+ method: options.method || 'radial',
163
+ radius: options.radius || 1,
164
+ blend: options.blend || 1
165
+ });
166
+
167
+ case 2: // Hypertetrahedron
168
+ return warpHypertetraCore(geometry, {
169
+ method: options.method || 'tetrahedral',
170
+ size: options.size || 1,
171
+ blend: options.blend || 1
172
+ });
173
+
174
+ default:
175
+ return geometry;
176
+ }
177
+ }
178
+
179
+ /**
180
+ * Main geometry generation function
181
+ * @param {number} geometryIndex - Geometry index (0-23)
182
+ * @param {object} options - Generation options
183
+ * @returns {object} Complete geometry
184
+ */
185
+ export function generateGeometry(geometryIndex, options = {}) {
186
+ const { baseIndex, coreIndex } = decodeGeometry(geometryIndex);
187
+
188
+ // Generate base geometry
189
+ const baseGeometry = generateBaseGeometry(baseIndex, options);
190
+
191
+ // Apply core warp
192
+ const finalGeometry = applyWarp(baseGeometry, coreIndex, options);
193
+
194
+ // Add metadata
195
+ return {
196
+ ...finalGeometry,
197
+ geometryIndex,
198
+ baseIndex,
199
+ coreIndex,
200
+ baseName: BASE_GEOMETRIES[baseIndex],
201
+ coreName: CORE_TYPES[coreIndex],
202
+ fullName: getGeometryName(geometryIndex)
203
+ };
204
+ }
205
+
206
+ /**
207
+ * Geometry Factory class for stateful generation
208
+ */
209
+ export class GeometryFactory {
210
+ constructor(defaultOptions = {}) {
211
+ this.options = {
212
+ scale: 1,
213
+ density: 24,
214
+ ...defaultOptions
215
+ };
216
+
217
+ this.cache = new Map();
218
+ this.cacheEnabled = defaultOptions.cacheEnabled !== false;
219
+ }
220
+
221
+ /**
222
+ * Generate geometry by index
223
+ * @param {number} index - Geometry index (0-23)
224
+ * @param {object} options - Override options
225
+ * @returns {object} Geometry
226
+ */
227
+ generate(index, options = {}) {
228
+ const mergedOptions = { ...this.options, ...options };
229
+ const cacheKey = `${index}_${JSON.stringify(mergedOptions)}`;
230
+
231
+ if (this.cacheEnabled && this.cache.has(cacheKey)) {
232
+ return this.cache.get(cacheKey);
233
+ }
234
+
235
+ const geometry = generateGeometry(index, mergedOptions);
236
+
237
+ if (this.cacheEnabled) {
238
+ this.cache.set(cacheKey, geometry);
239
+ }
240
+
241
+ return geometry;
242
+ }
243
+
244
+ /**
245
+ * Generate geometry by name
246
+ * @param {string} name - Geometry name (e.g., 'hypercube', 'torus_hypersphere')
247
+ * @param {object} options - Override options
248
+ * @returns {object} Geometry
249
+ */
250
+ generateByName(name, options = {}) {
251
+ const index = this.getIndexByName(name);
252
+ if (index === -1) {
253
+ throw new Error(`Unknown geometry name: ${name}`);
254
+ }
255
+ return this.generate(index, options);
256
+ }
257
+
258
+ /**
259
+ * Get geometry index by name
260
+ * @param {string} name
261
+ * @returns {number} Index or -1 if not found
262
+ */
263
+ getIndexByName(name) {
264
+ const allNames = getAllGeometryNames();
265
+ return allNames.indexOf(name);
266
+ }
267
+
268
+ /**
269
+ * Generate all 24 geometries
270
+ * @param {object} options - Generation options
271
+ * @returns {object[]} Array of 24 geometries
272
+ */
273
+ generateAll(options = {}) {
274
+ return Array.from({ length: 24 }, (_, i) => this.generate(i, options));
275
+ }
276
+
277
+ /**
278
+ * Generate geometries for a specific core type
279
+ * @param {number} coreIndex - Core type (0, 1, or 2)
280
+ * @param {object} options - Generation options
281
+ * @returns {object[]} Array of 8 geometries
282
+ */
283
+ generateByCore(coreIndex, options = {}) {
284
+ const startIndex = coreIndex * 8;
285
+ return Array.from({ length: 8 }, (_, i) =>
286
+ this.generate(startIndex + i, options)
287
+ );
288
+ }
289
+
290
+ /**
291
+ * Clear the geometry cache
292
+ */
293
+ clearCache() {
294
+ this.cache.clear();
295
+ }
296
+
297
+ /**
298
+ * Get cache statistics
299
+ * @returns {object} Cache stats
300
+ */
301
+ getCacheStats() {
302
+ return {
303
+ size: this.cache.size,
304
+ enabled: this.cacheEnabled
305
+ };
306
+ }
307
+ }
308
+
309
+ /**
310
+ * Default factory instance
311
+ */
312
+ export const defaultFactory = new GeometryFactory();
313
+
314
+ export default GeometryFactory;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * VIB3 Geometry Library
3
+ * 8 geometric types with 4D polytopal mathematics integration
4
+ * WebGL 1.0 compatible shaders only
5
+ */
6
+
7
+ export class GeometryLibrary {
8
+ static getGeometryNames() {
9
+ return [
10
+ 'TETRAHEDRON',
11
+ 'HYPERCUBE',
12
+ 'SPHERE',
13
+ 'TORUS',
14
+ 'KLEIN BOTTLE',
15
+ 'FRACTAL',
16
+ 'WAVE',
17
+ 'CRYSTAL'
18
+ ];
19
+ }
20
+
21
+ static getGeometryName(type) {
22
+ const names = this.getGeometryNames();
23
+ return names[type] || 'UNKNOWN';
24
+ }
25
+
26
+ /**
27
+ * Get variation parameters for specific geometry and level
28
+ */
29
+ static getVariationParameters(geometryType, level) {
30
+ const baseParams = {
31
+ gridDensity: 8 + (level * 4),
32
+ morphFactor: 0.5 + (level * 0.3),
33
+ chaos: level * 0.15,
34
+ speed: 0.8 + (level * 0.2),
35
+ hue: (geometryType * 45 + level * 15) % 360
36
+ };
37
+
38
+ // Geometry-specific adjustments
39
+ switch (geometryType) {
40
+ case 0: // Tetrahedron
41
+ baseParams.gridDensity *= 1.2;
42
+ break;
43
+ case 1: // Hypercube
44
+ baseParams.morphFactor *= 0.8;
45
+ break;
46
+ case 2: // Sphere
47
+ baseParams.chaos *= 1.5;
48
+ break;
49
+ case 3: // Torus
50
+ baseParams.speed *= 1.3;
51
+ break;
52
+ case 4: // Klein Bottle
53
+ baseParams.gridDensity *= 0.7;
54
+ baseParams.morphFactor *= 1.4;
55
+ break;
56
+ case 5: // Fractal
57
+ baseParams.gridDensity *= 0.5;
58
+ baseParams.chaos *= 2.0;
59
+ break;
60
+ case 6: // Wave
61
+ baseParams.speed *= 1.8;
62
+ baseParams.chaos *= 0.5;
63
+ break;
64
+ case 7: // Crystal
65
+ baseParams.gridDensity *= 1.5;
66
+ baseParams.morphFactor *= 0.6;
67
+ break;
68
+ }
69
+
70
+ return baseParams;
71
+ }
72
+ }