@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,341 @@
1
+ /**
2
+ * Wave Geometry Generator
3
+ *
4
+ * Generates sinusoidal interference patterns in 4D space.
5
+ * Models wave phenomena, standing waves, and interference patterns.
6
+ */
7
+
8
+ import { Vec4 } from '../../math/Vec4.js';
9
+
10
+ /**
11
+ * Generate 4D standing wave pattern
12
+ * @param {number} amplitude - Wave amplitude
13
+ * @param {number} frequency - Wave frequency
14
+ * @param {number} segments - Resolution per axis
15
+ * @returns {Vec4[]} Vertices
16
+ */
17
+ export function generateStandingWave4D(amplitude = 0.5, frequency = 2, segments = 16) {
18
+ const vertices = [];
19
+ const step = (2 * Math.PI) / segments;
20
+
21
+ for (let i = 0; i <= segments; i++) {
22
+ const u = i * step;
23
+ for (let j = 0; j <= segments; j++) {
24
+ const v = j * step;
25
+ for (let k = 0; k <= Math.floor(segments / 2); k++) {
26
+ const t = (k / (segments / 2)) * Math.PI;
27
+
28
+ // Standing wave in 4D
29
+ const x = Math.cos(u);
30
+ const y = Math.sin(u) * Math.cos(v);
31
+ const z = Math.sin(u) * Math.sin(v) * Math.cos(t);
32
+ const w = amplitude * Math.sin(frequency * u) *
33
+ Math.sin(frequency * v) *
34
+ Math.cos(frequency * t);
35
+
36
+ vertices.push(new Vec4(x, y, z, w));
37
+ }
38
+ }
39
+ }
40
+
41
+ return vertices;
42
+ }
43
+
44
+ /**
45
+ * Generate interference pattern from two 4D wave sources
46
+ * @param {Vec4} source1 - First wave source position
47
+ * @param {Vec4} source2 - Second wave source position
48
+ * @param {number} wavelength - Wave wavelength
49
+ * @param {number} gridSize - Sampling grid size
50
+ * @param {number} segments - Resolution
51
+ * @returns {Vec4[]} Vertices with W as amplitude
52
+ */
53
+ export function generateInterferencePattern(
54
+ source1 = new Vec4(-1, 0, 0, 0),
55
+ source2 = new Vec4(1, 0, 0, 0),
56
+ wavelength = 0.5,
57
+ gridSize = 2,
58
+ segments = 20
59
+ ) {
60
+ const vertices = [];
61
+ const k = (2 * Math.PI) / wavelength;
62
+ const step = (2 * gridSize) / segments;
63
+
64
+ for (let i = 0; i <= segments; i++) {
65
+ const x = -gridSize + i * step;
66
+ for (let j = 0; j <= segments; j++) {
67
+ const y = -gridSize + j * step;
68
+ for (let l = 0; l <= Math.floor(segments / 2); l++) {
69
+ const z = -gridSize / 2 + l * step;
70
+
71
+ // Distance from each source
72
+ const pos = new Vec4(x, y, z, 0);
73
+ const d1 = pos.distanceTo(source1);
74
+ const d2 = pos.distanceTo(source2);
75
+
76
+ // Superposition of waves
77
+ const wave1 = Math.sin(k * d1) / Math.max(d1, 0.1);
78
+ const wave2 = Math.sin(k * d2) / Math.max(d2, 0.1);
79
+ const amplitude = (wave1 + wave2) * 0.5;
80
+
81
+ vertices.push(new Vec4(x, y, z, amplitude));
82
+ }
83
+ }
84
+ }
85
+
86
+ return vertices;
87
+ }
88
+
89
+ /**
90
+ * Generate 4D ripple surface
91
+ * @param {number} radius - Surface radius
92
+ * @param {number} frequency - Ripple frequency
93
+ * @param {number} decay - Amplitude decay rate
94
+ * @param {number} segments - Resolution
95
+ * @returns {Vec4[]} Vertices
96
+ */
97
+ export function generateRippleSurface(radius = 2, frequency = 4, decay = 0.5, segments = 32) {
98
+ const vertices = [];
99
+
100
+ for (let i = 0; i <= segments; i++) {
101
+ const u = (i / segments) * Math.PI * 2;
102
+ for (let j = 0; j <= segments; j++) {
103
+ const r = (j / segments) * radius;
104
+
105
+ const x = r * Math.cos(u);
106
+ const y = r * Math.sin(u);
107
+
108
+ // Ripple in Z and W dimensions
109
+ const ripple = Math.sin(frequency * r) * Math.exp(-decay * r);
110
+ const z = ripple * 0.5;
111
+ const w = ripple * Math.cos(u * 2) * 0.3;
112
+
113
+ vertices.push(new Vec4(x, y, z, w));
114
+ }
115
+ }
116
+
117
+ return vertices;
118
+ }
119
+
120
+ /**
121
+ * Generate sinusoidal helix in 4D
122
+ * @param {number} radius - Helix radius
123
+ * @param {number} pitch - Helix pitch
124
+ * @param {number} turns - Number of turns
125
+ * @param {number} segments - Resolution
126
+ * @returns {Vec4[]} Vertices
127
+ */
128
+ export function generateWaveHelix4D(radius = 1, pitch = 0.5, turns = 3, segments = 100) {
129
+ const vertices = [];
130
+ const totalAngle = turns * 2 * Math.PI;
131
+
132
+ for (let i = 0; i <= segments; i++) {
133
+ const t = (i / segments) * totalAngle;
134
+
135
+ const x = radius * Math.cos(t);
136
+ const y = radius * Math.sin(t);
137
+ const z = pitch * t / (2 * Math.PI);
138
+ // W oscillates creating a 4D wave pattern
139
+ const w = 0.3 * Math.sin(t * 3);
140
+
141
+ vertices.push(new Vec4(x, y, z, w));
142
+ }
143
+
144
+ return vertices;
145
+ }
146
+
147
+ /**
148
+ * Generate plane wave in 4D
149
+ * @param {Vec4} direction - Wave propagation direction (normalized)
150
+ * @param {number} wavelength - Wavelength
151
+ * @param {number} amplitude - Wave amplitude
152
+ * @param {number} gridSize - Sampling region size
153
+ * @param {number} segments - Resolution
154
+ * @returns {Vec4[]} Vertices
155
+ */
156
+ export function generatePlaneWave4D(
157
+ direction = new Vec4(1, 0, 0, 0).normalize(),
158
+ wavelength = 1,
159
+ amplitude = 0.5,
160
+ gridSize = 2,
161
+ segments = 16
162
+ ) {
163
+ const vertices = [];
164
+ const k = (2 * Math.PI) / wavelength;
165
+ const step = (2 * gridSize) / segments;
166
+
167
+ for (let i = 0; i <= segments; i++) {
168
+ const x = -gridSize + i * step;
169
+ for (let j = 0; j <= segments; j++) {
170
+ const y = -gridSize + j * step;
171
+ for (let l = 0; l <= segments; l++) {
172
+ const z = -gridSize + l * step;
173
+
174
+ // Phase based on dot product with direction
175
+ const pos = new Vec4(x, y, z, 0);
176
+ const phase = k * pos.dot(direction);
177
+ const w = amplitude * Math.sin(phase);
178
+
179
+ vertices.push(new Vec4(x, y, z, w));
180
+ }
181
+ }
182
+ }
183
+
184
+ return vertices;
185
+ }
186
+
187
+ /**
188
+ * Generate spherical wave emanating from origin in 4D
189
+ * @param {number} maxRadius - Maximum radius
190
+ * @param {number} frequency - Wave frequency
191
+ * @param {number} segments - Resolution
192
+ * @returns {Vec4[]} Vertices
193
+ */
194
+ export function generateSphericalWave4D(maxRadius = 2, frequency = 3, segments = 24) {
195
+ const vertices = [];
196
+
197
+ // Use 4D spherical coordinates
198
+ for (let i = 0; i <= segments; i++) {
199
+ const phi1 = (i / segments) * Math.PI;
200
+ for (let j = 0; j <= segments; j++) {
201
+ const phi2 = (j / segments) * Math.PI;
202
+ for (let k = 0; k <= segments * 2; k++) {
203
+ const phi3 = (k / (segments * 2)) * Math.PI * 2;
204
+
205
+ // Radius varies with wave
206
+ const baseR = (i / segments) * maxRadius;
207
+ const wave = 0.1 * Math.sin(frequency * baseR);
208
+ const r = baseR + wave;
209
+
210
+ // 4D hyperspherical coordinates
211
+ const x = r * Math.sin(phi1) * Math.sin(phi2) * Math.cos(phi3);
212
+ const y = r * Math.sin(phi1) * Math.sin(phi2) * Math.sin(phi3);
213
+ const z = r * Math.sin(phi1) * Math.cos(phi2);
214
+ const w = r * Math.cos(phi1);
215
+
216
+ vertices.push(new Vec4(x, y, z, w));
217
+ }
218
+ }
219
+ }
220
+
221
+ return vertices;
222
+ }
223
+
224
+ /**
225
+ * Generate wave edges (connect sequential points)
226
+ * @param {Vec4[]} vertices
227
+ * @param {number} stride - Connection stride
228
+ * @returns {number[][]} Edge pairs
229
+ */
230
+ export function generateWaveEdges(vertices, stride = 1) {
231
+ const edges = [];
232
+
233
+ for (let i = 0; i < vertices.length - stride; i += stride) {
234
+ edges.push([i, i + stride]);
235
+ }
236
+
237
+ return edges;
238
+ }
239
+
240
+ /**
241
+ * Generate grid edges for wave surface
242
+ * @param {number} uSegments
243
+ * @param {number} vSegments
244
+ * @returns {number[][]} Edge pairs
245
+ */
246
+ export function generateWaveGridEdges(uSegments, vSegments) {
247
+ const edges = [];
248
+
249
+ for (let i = 0; i < uSegments; i++) {
250
+ for (let j = 0; j < vSegments; j++) {
251
+ const idx = i * (vSegments + 1) + j;
252
+ const nextU = (i + 1) * (vSegments + 1) + j;
253
+ const nextV = i * (vSegments + 1) + j + 1;
254
+
255
+ if (i < uSegments - 1) edges.push([idx, nextU]);
256
+ if (j < vSegments) edges.push([idx, nextV]);
257
+ }
258
+ }
259
+
260
+ return edges;
261
+ }
262
+
263
+ /**
264
+ * Generate complete wave geometry
265
+ * @param {string} type - 'standing', 'interference', 'ripple', 'helix', 'plane', 'spherical'
266
+ * @param {object} params - Type-specific parameters
267
+ * @returns {object} Geometry
268
+ */
269
+ export function generateWave(type = 'standing', params = {}) {
270
+ const {
271
+ amplitude = 0.5,
272
+ frequency = 2,
273
+ segments = 16,
274
+ radius = 1
275
+ } = params;
276
+
277
+ let vertices, edges;
278
+
279
+ switch (type) {
280
+ case 'standing':
281
+ vertices = generateStandingWave4D(amplitude, frequency, segments);
282
+ edges = generateWaveEdges(vertices);
283
+ break;
284
+
285
+ case 'interference':
286
+ vertices = generateInterferencePattern(
287
+ params.source1,
288
+ params.source2,
289
+ params.wavelength || 0.5,
290
+ params.gridSize || 2,
291
+ segments
292
+ );
293
+ edges = generateWaveEdges(vertices);
294
+ break;
295
+
296
+ case 'ripple':
297
+ vertices = generateRippleSurface(radius, frequency, params.decay || 0.5, segments);
298
+ edges = generateWaveGridEdges(segments, segments);
299
+ break;
300
+
301
+ case 'helix':
302
+ vertices = generateWaveHelix4D(radius, params.pitch || 0.5, params.turns || 3, segments * 6);
303
+ edges = generateWaveEdges(vertices);
304
+ break;
305
+
306
+ case 'plane':
307
+ vertices = generatePlaneWave4D(
308
+ params.direction,
309
+ params.wavelength || 1,
310
+ amplitude,
311
+ params.gridSize || 2,
312
+ segments
313
+ );
314
+ edges = [];
315
+ break;
316
+
317
+ case 'spherical':
318
+ vertices = generateSphericalWave4D(radius, frequency, Math.floor(segments / 2));
319
+ edges = [];
320
+ break;
321
+
322
+ default:
323
+ vertices = generateStandingWave4D(amplitude, frequency, segments);
324
+ edges = generateWaveEdges(vertices);
325
+ }
326
+
327
+ return {
328
+ name: `wave_${type}`,
329
+ vertices,
330
+ edges,
331
+ faces: [],
332
+ vertexCount: vertices.length,
333
+ edgeCount: edges.length,
334
+ faceCount: 0,
335
+ waveType: type,
336
+ frequency,
337
+ amplitude
338
+ };
339
+ }
340
+
341
+ export default generateWave;
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Geometry Module
3
+ *
4
+ * Complete 4D geometry generation system with 24 variants.
5
+ *
6
+ * Encoding: geometry = coreIndex * 8 + baseIndex
7
+ *
8
+ * Base Geometries (0-7):
9
+ * 0: Tetrahedron - 5-cell (pentatope)
10
+ * 1: Hypercube - Tesseract
11
+ * 2: Sphere - 4D hypersphere
12
+ * 3: Torus - Clifford torus
13
+ * 4: Klein Bottle - Non-orientable 4D surface
14
+ * 5: Fractal - Recursive 4D structures
15
+ * 6: Wave - Sinusoidal 4D patterns
16
+ * 7: Crystal - Crystalline lattices
17
+ *
18
+ * Core Types:
19
+ * 0: Base (0-7) - Pure geometry
20
+ * 1: Hypersphere (8-15) - Wrapped in 4D sphere
21
+ * 2: Hypertetrahedron (16-23) - Wrapped in 5-cell
22
+ */
23
+
24
+ // Main factory
25
+ export {
26
+ GeometryFactory,
27
+ defaultFactory,
28
+ generateGeometry,
29
+ generateBaseGeometry,
30
+ applyWarp,
31
+ decodeGeometry,
32
+ encodeGeometry,
33
+ getGeometryName,
34
+ getAllGeometryNames,
35
+ BASE_GEOMETRIES,
36
+ CORE_TYPES
37
+ } from './GeometryFactory.js';
38
+
39
+ // Base generators
40
+ export { default as generateTesseract } from './generators/Tesseract.js';
41
+ export {
42
+ generateTesseractVertices,
43
+ generateTesseractEdges,
44
+ generateTesseractFaces
45
+ } from './generators/Tesseract.js';
46
+
47
+ export {
48
+ generate5Cell,
49
+ generate5CellVertices,
50
+ generate5CellEdges,
51
+ generateTetrahedronLattice
52
+ } from './generators/Tetrahedron.js';
53
+
54
+ export {
55
+ default as generateHypersphere,
56
+ generateHypersphereVertices,
57
+ generateHypersphereFibonacci,
58
+ generateHypersphereLatitudes
59
+ } from './generators/Sphere.js';
60
+
61
+ export {
62
+ generateCliffordTorus,
63
+ generate4DTorus,
64
+ generateTorusEdges
65
+ } from './generators/Torus.js';
66
+
67
+ export {
68
+ default as generateKleinBottle,
69
+ generateKleinBottleVertices,
70
+ generateKleinBottleBottle,
71
+ generateKleinBottleEdges,
72
+ generateMobiusStrip
73
+ } from './generators/KleinBottle.js';
74
+
75
+ export {
76
+ default as generateFractal,
77
+ generateSierpinskiPentatope,
78
+ generateMengerHypersponge,
79
+ generateFractalTree4D,
80
+ generateCantorDust4D
81
+ } from './generators/Fractal.js';
82
+
83
+ export {
84
+ default as generateWave,
85
+ generateStandingWave4D,
86
+ generateInterferencePattern,
87
+ generateRippleSurface,
88
+ generateWaveHelix4D,
89
+ generatePlaneWave4D,
90
+ generateSphericalWave4D
91
+ } from './generators/Wave.js';
92
+
93
+ export {
94
+ default as generateCrystal,
95
+ generate16CellVertices,
96
+ generate16CellEdges,
97
+ generate24CellVertices,
98
+ generate24CellEdges,
99
+ generateCubicLattice4D,
100
+ generateFCCLattice4D,
101
+ generateDiamondCrystal4D,
102
+ generateQuasicrystal4D,
103
+ generateUnitCell4D
104
+ } from './generators/Crystal.js';
105
+
106
+ // Warp functions
107
+ export {
108
+ warpHypersphereCore,
109
+ projectToHypersphere,
110
+ stereographicToHypersphere,
111
+ hopfFibration,
112
+ warpRadial,
113
+ warpStereographic,
114
+ warpHopf,
115
+ generateHypersphereSurface
116
+ } from './warp/HypersphereCore.js';
117
+
118
+ export {
119
+ warpHypertetraCore,
120
+ getPentatopeVertices,
121
+ getPentatopeEdges,
122
+ getPentatopeFaces,
123
+ getPentatopeCells,
124
+ warpTetrahedral,
125
+ warpToEdges,
126
+ warpToCells,
127
+ generatePentatope
128
+ } from './warp/HypertetraCore.js';
129
+
130
+ export { CORE_TYPES as WARP_CORE_TYPES, getCoreTypeName } from './warp/index.js';
131
+
132
+ // Buffer utilities
133
+ export {
134
+ buildVertexBuffer,
135
+ buildEdgeIndexBuffer,
136
+ buildFaceIndexBuffer,
137
+ buildInterleavedBuffer,
138
+ buildNormalBuffer,
139
+ generateWDepthColors,
140
+ generateRainbowColors,
141
+ buildGeometryBuffers
142
+ } from './buffers/BufferBuilder.js';
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Hypersphere Core Warp
3
+ *
4
+ * Warps base geometry onto a 4D hypersphere surface.
5
+ * Creates geometries 8-15 in the 24-variant encoding system.
6
+ *
7
+ * The warp projects points onto the 3-sphere (S³), which is the
8
+ * set of all unit vectors in 4D space.
9
+ */
10
+
11
+ import { Vec4 } from '../../math/Vec4.js';
12
+
13
+ /**
14
+ * Project a point onto the 3-sphere (hypersphere surface)
15
+ * @param {Vec4} point - Input point
16
+ * @param {number} radius - Hypersphere radius
17
+ * @returns {Vec4} Point on hypersphere
18
+ */
19
+ export function projectToHypersphere(point, radius = 1) {
20
+ const len = point.length();
21
+ if (len < 0.0001) {
22
+ // Handle origin - project to north pole
23
+ return new Vec4(0, 0, 0, radius);
24
+ }
25
+ return point.scale(radius / len);
26
+ }
27
+
28
+ /**
29
+ * Inverse stereographic projection from R³ to S³
30
+ * Maps all of 3D space onto the 4D hypersphere
31
+ * @param {Vec4} point - Input point (uses x, y, z)
32
+ * @param {number} radius - Hypersphere radius
33
+ * @returns {Vec4} Point on hypersphere
34
+ */
35
+ export function stereographicToHypersphere(point, radius = 1) {
36
+ const x = point.x;
37
+ const y = point.y;
38
+ const z = point.z;
39
+
40
+ const sumSq = x * x + y * y + z * z;
41
+ const denom = sumSq + 1;
42
+
43
+ return new Vec4(
44
+ (2 * x) / denom * radius,
45
+ (2 * y) / denom * radius,
46
+ (2 * z) / denom * radius,
47
+ (sumSq - 1) / denom * radius
48
+ );
49
+ }
50
+
51
+ /**
52
+ * Hopf fibration mapping
53
+ * Maps points on S² × [0, 2π] to S³
54
+ * Creates beautiful toroidal structures on the hypersphere
55
+ * @param {number} theta - Angle on base S² (0 to π)
56
+ * @param {number} phi - Azimuth on base S² (0 to 2π)
57
+ * @param {number} psi - Fiber angle (0 to 2π)
58
+ * @param {number} radius - Hypersphere radius
59
+ * @returns {Vec4} Point on hypersphere
60
+ */
61
+ export function hopfFibration(theta, phi, psi, radius = 1) {
62
+ const cosTheta2 = Math.cos(theta / 2);
63
+ const sinTheta2 = Math.sin(theta / 2);
64
+
65
+ return new Vec4(
66
+ cosTheta2 * Math.cos((phi + psi) / 2) * radius,
67
+ cosTheta2 * Math.sin((phi + psi) / 2) * radius,
68
+ sinTheta2 * Math.cos((phi - psi) / 2) * radius,
69
+ sinTheta2 * Math.sin((phi - psi) / 2) * radius
70
+ );
71
+ }
72
+
73
+ /**
74
+ * Warp a geometry onto the hypersphere using radial projection
75
+ * @param {Vec4[]} vertices - Input vertices
76
+ * @param {number} radius - Hypersphere radius
77
+ * @param {number} blendFactor - How much to blend (0=original, 1=full sphere)
78
+ * @returns {Vec4[]} Warped vertices
79
+ */
80
+ export function warpRadial(vertices, radius = 1, blendFactor = 1) {
81
+ return vertices.map(v => {
82
+ const onSphere = projectToHypersphere(v, radius);
83
+ return v.lerp(onSphere, blendFactor);
84
+ });
85
+ }
86
+
87
+ /**
88
+ * Warp geometry using stereographic projection
89
+ * Maps the entire geometry onto the hypersphere
90
+ * @param {Vec4[]} vertices - Input vertices
91
+ * @param {number} radius - Hypersphere radius
92
+ * @param {number} scale - Pre-scale factor before projection
93
+ * @returns {Vec4[]} Warped vertices
94
+ */
95
+ export function warpStereographic(vertices, radius = 1, scale = 1) {
96
+ return vertices.map(v => {
97
+ const scaled = v.scale(scale);
98
+ return stereographicToHypersphere(scaled, radius);
99
+ });
100
+ }
101
+
102
+ /**
103
+ * Warp geometry along Hopf fibers
104
+ * Creates twisted, fibered structures
105
+ * @param {Vec4[]} vertices - Input vertices
106
+ * @param {number} radius - Hypersphere radius
107
+ * @param {number} twist - Twist factor along fiber
108
+ * @returns {Vec4[]} Warped vertices
109
+ */
110
+ export function warpHopf(vertices, radius = 1, twist = 1) {
111
+ return vertices.map(v => {
112
+ // Convert to spherical-like coordinates
113
+ const r = v.length();
114
+ if (r < 0.0001) {
115
+ return new Vec4(0, 0, 0, radius);
116
+ }
117
+
118
+ // Use original angles but apply to Hopf structure
119
+ const theta = Math.acos(v.z / r);
120
+ const phi = Math.atan2(v.y, v.x);
121
+ const psi = v.w * twist + phi * 0.5;
122
+
123
+ return hopfFibration(theta, phi, psi, radius);
124
+ });
125
+ }
126
+
127
+ /**
128
+ * Main hypersphere core warp function
129
+ * Wraps base geometry in a 4D hypersphere structure
130
+ *
131
+ * @param {object} geometry - Base geometry with vertices and edges
132
+ * @param {object} options - Warp options
133
+ * @param {string} options.method - 'radial', 'stereographic', 'hopf'
134
+ * @param {number} options.radius - Hypersphere radius (default 1)
135
+ * @param {number} options.blend - Blend factor (default 1)
136
+ * @param {number} options.scale - Pre-scale factor (default 1)
137
+ * @param {number} options.twist - Hopf twist factor (default 1)
138
+ * @returns {object} Warped geometry
139
+ */
140
+ export function warpHypersphereCore(geometry, options = {}) {
141
+ const {
142
+ method = 'radial',
143
+ radius = 1,
144
+ blend = 1,
145
+ scale = 1,
146
+ twist = 1
147
+ } = options;
148
+
149
+ let warpedVertices;
150
+
151
+ // Pre-scale vertices
152
+ const scaledVertices = geometry.vertices.map(v => v.scale(scale));
153
+
154
+ switch (method) {
155
+ case 'stereographic':
156
+ warpedVertices = warpStereographic(scaledVertices, radius, 1);
157
+ break;
158
+
159
+ case 'hopf':
160
+ warpedVertices = warpHopf(scaledVertices, radius, twist);
161
+ break;
162
+
163
+ case 'radial':
164
+ default:
165
+ warpedVertices = warpRadial(scaledVertices, radius, blend);
166
+ break;
167
+ }
168
+
169
+ return {
170
+ ...geometry,
171
+ name: `${geometry.name}_hypersphere`,
172
+ vertices: warpedVertices,
173
+ vertexCount: warpedVertices.length,
174
+ coreType: 'hypersphere',
175
+ warpMethod: method,
176
+ warpRadius: radius
177
+ };
178
+ }
179
+
180
+ /**
181
+ * Generate pure hypersphere surface (for reference)
182
+ * @param {number} radius - Hypersphere radius
183
+ * @param {number} segments - Resolution per angle
184
+ * @returns {Vec4[]} Vertices on hypersphere
185
+ */
186
+ export function generateHypersphereSurface(radius = 1, segments = 16) {
187
+ const vertices = [];
188
+
189
+ // Use 3 angular parameters for S³
190
+ for (let i = 0; i <= segments; i++) {
191
+ const psi = (i / segments) * Math.PI;
192
+ for (let j = 0; j <= segments; j++) {
193
+ const theta = (j / segments) * Math.PI;
194
+ for (let k = 0; k <= segments * 2; k++) {
195
+ const phi = (k / (segments * 2)) * Math.PI * 2;
196
+
197
+ // Hyperspherical coordinates
198
+ const x = radius * Math.sin(psi) * Math.sin(theta) * Math.cos(phi);
199
+ const y = radius * Math.sin(psi) * Math.sin(theta) * Math.sin(phi);
200
+ const z = radius * Math.sin(psi) * Math.cos(theta);
201
+ const w = radius * Math.cos(psi);
202
+
203
+ vertices.push(new Vec4(x, y, z, w));
204
+ }
205
+ }
206
+ }
207
+
208
+ return vertices;
209
+ }
210
+
211
+ export default warpHypersphereCore;