@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.
- package/CHANGELOG.md +118 -0
- package/DOCS/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +34 -0
- package/DOCS/CI_TESTING.md +38 -0
- package/DOCS/CLI_ONBOARDING.md +75 -0
- package/DOCS/CONTROL_REFERENCE.md +64 -0
- package/DOCS/DEV_TRACK_ANALYSIS.md +77 -0
- package/DOCS/DEV_TRACK_PLAN_2026-01-07.md +42 -0
- package/DOCS/DEV_TRACK_SESSION_2026-01-31.md +220 -0
- package/DOCS/ENV_SETUP.md +189 -0
- package/DOCS/EXPORT_FORMATS.md +417 -0
- package/DOCS/GPU_DISPOSAL_GUIDE.md +21 -0
- package/DOCS/LICENSING_TIERS.md +275 -0
- package/DOCS/MASTER_PLAN_2026-01-31.md +570 -0
- package/DOCS/OBS_SETUP_GUIDE.md +98 -0
- package/DOCS/PROJECT_SETUP.md +66 -0
- package/DOCS/RENDERER_LIFECYCLE.md +40 -0
- package/DOCS/REPO_MANIFEST.md +121 -0
- package/DOCS/SESSION_014_PLAN.md +195 -0
- package/DOCS/SESSION_LOG_2026-01-07.md +56 -0
- package/DOCS/STRATEGIC_BLUEPRINT_2026-01-07.md +72 -0
- package/DOCS/SYSTEM_AUDIT_2026-01-30.md +738 -0
- package/DOCS/SYSTEM_INVENTORY.md +520 -0
- package/DOCS/TELEMETRY_EXPORTS.md +34 -0
- package/DOCS/WEBGPU_STATUS.md +38 -0
- package/DOCS/XR_BENCHMARKS.md +608 -0
- package/LICENSE +21 -0
- package/README.md +426 -0
- package/docs/.nojekyll +0 -0
- package/docs/01-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/02-hyperspatial_ego_death.html +346 -0
- package/docs/03-post_cartesian_sublime.html +346 -0
- package/docs/04-crystalline_void_meditation.html +346 -0
- package/docs/05-quantum_decoherence_ballet.html +346 -0
- package/docs/06-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/07-hyperspatial_ego_death.html +346 -0
- package/docs/08-post_cartesian_sublime.html +346 -0
- package/docs/09-crystalline_void_meditation.html +346 -0
- package/docs/10-quantum_decoherence_ballet.html +346 -0
- package/docs/11-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/12-hyperspatial_ego_death.html +346 -0
- package/docs/13-post_cartesian_sublime.html +346 -0
- package/docs/index.html +794 -0
- package/docs/test-hub.html +441 -0
- package/docs/url-state.js +102 -0
- package/docs/vib3-exports/01-quantum-quantum-tetrahedron-lattice.html +489 -0
- package/docs/vib3-exports/02-quantum-quantum-hypersphere-matrix.html +489 -0
- package/docs/vib3-exports/03-quantum-quantum-hypertetra-fractal.html +489 -0
- package/docs/vib3-exports/04-faceted-faceted-crystal-structure.html +407 -0
- package/docs/vib3-exports/05-faceted-faceted-klein-bottle.html +407 -0
- package/docs/vib3-exports/06-faceted-faceted-hypertetra-torus.html +407 -0
- package/docs/vib3-exports/07-holographic-holographic-wave-field.html +457 -0
- package/docs/vib3-exports/08-holographic-holographic-hypersphere-sphere.html +457 -0
- package/docs/vib3-exports/09-holographic-holographic-hypertetra-crystal.html +457 -0
- package/docs/vib3-exports/index.html +238 -0
- package/docs/webgpu-live.html +702 -0
- package/package.json +367 -0
- package/src/advanced/AIPresetGenerator.js +777 -0
- package/src/advanced/MIDIController.js +703 -0
- package/src/advanced/OffscreenWorker.js +1051 -0
- package/src/advanced/WebGPUCompute.js +1051 -0
- package/src/advanced/WebXRRenderer.js +680 -0
- package/src/agent/cli/AgentCLI.js +615 -0
- package/src/agent/cli/index.js +14 -0
- package/src/agent/index.js +73 -0
- package/src/agent/mcp/MCPServer.js +950 -0
- package/src/agent/mcp/index.js +9 -0
- package/src/agent/mcp/tools.js +548 -0
- package/src/agent/telemetry/EventStream.js +669 -0
- package/src/agent/telemetry/Instrumentation.js +618 -0
- package/src/agent/telemetry/TelemetryExporters.js +427 -0
- package/src/agent/telemetry/TelemetryService.js +464 -0
- package/src/agent/telemetry/index.js +52 -0
- package/src/benchmarks/BenchmarkRunner.js +381 -0
- package/src/benchmarks/MetricsCollector.js +299 -0
- package/src/benchmarks/index.js +9 -0
- package/src/benchmarks/scenes.js +259 -0
- package/src/cli/index.js +675 -0
- package/src/config/ApiConfig.js +88 -0
- package/src/core/CanvasManager.js +217 -0
- package/src/core/ErrorReporter.js +117 -0
- package/src/core/ParameterMapper.js +333 -0
- package/src/core/Parameters.js +396 -0
- package/src/core/RendererContracts.js +200 -0
- package/src/core/UnifiedResourceManager.js +370 -0
- package/src/core/VIB3Engine.js +636 -0
- package/src/core/renderers/FacetedRendererAdapter.js +32 -0
- package/src/core/renderers/HolographicRendererAdapter.js +29 -0
- package/src/core/renderers/QuantumRendererAdapter.js +29 -0
- package/src/core/renderers/RendererLifecycleManager.js +63 -0
- package/src/creative/ColorPresetsSystem.js +980 -0
- package/src/creative/ParameterTimeline.js +1061 -0
- package/src/creative/PostProcessingPipeline.js +1113 -0
- package/src/creative/TransitionAnimator.js +683 -0
- package/src/export/CSSExporter.js +226 -0
- package/src/export/CardGeneratorBase.js +279 -0
- package/src/export/ExportManager.js +580 -0
- package/src/export/FacetedCardGenerator.js +279 -0
- package/src/export/HolographicCardGenerator.js +543 -0
- package/src/export/LottieExporter.js +552 -0
- package/src/export/QuantumCardGenerator.js +315 -0
- package/src/export/SVGExporter.js +519 -0
- package/src/export/ShaderExporter.js +903 -0
- package/src/export/TradingCardGenerator.js +3055 -0
- package/src/export/TradingCardManager.js +181 -0
- package/src/export/VIB3PackageExporter.js +559 -0
- package/src/export/index.js +14 -0
- package/src/export/systems/TradingCardSystemFaceted.js +494 -0
- package/src/export/systems/TradingCardSystemHolographic.js +452 -0
- package/src/export/systems/TradingCardSystemQuantum.js +411 -0
- package/src/faceted/FacetedSystem.js +963 -0
- package/src/features/CollectionManager.js +433 -0
- package/src/gallery/CollectionManager.js +240 -0
- package/src/gallery/GallerySystem.js +485 -0
- package/src/geometry/GeometryFactory.js +314 -0
- package/src/geometry/GeometryLibrary.js +72 -0
- package/src/geometry/buffers/BufferBuilder.js +338 -0
- package/src/geometry/buffers/index.js +18 -0
- package/src/geometry/generators/Crystal.js +420 -0
- package/src/geometry/generators/Fractal.js +298 -0
- package/src/geometry/generators/KleinBottle.js +197 -0
- package/src/geometry/generators/Sphere.js +192 -0
- package/src/geometry/generators/Tesseract.js +160 -0
- package/src/geometry/generators/Tetrahedron.js +225 -0
- package/src/geometry/generators/Torus.js +304 -0
- package/src/geometry/generators/Wave.js +341 -0
- package/src/geometry/index.js +142 -0
- package/src/geometry/warp/HypersphereCore.js +211 -0
- package/src/geometry/warp/HypertetraCore.js +386 -0
- package/src/geometry/warp/index.js +57 -0
- package/src/holograms/HolographicVisualizer.js +1073 -0
- package/src/holograms/RealHolographicSystem.js +966 -0
- package/src/holograms/variantRegistry.js +69 -0
- package/src/integrations/FigmaPlugin.js +854 -0
- package/src/integrations/OBSMode.js +754 -0
- package/src/integrations/ThreeJsPackage.js +660 -0
- package/src/integrations/TouchDesignerExport.js +552 -0
- package/src/integrations/frameworks/Vib3React.js +591 -0
- package/src/integrations/frameworks/Vib3Svelte.js +654 -0
- package/src/integrations/frameworks/Vib3Vue.js +628 -0
- package/src/llm/LLMParameterInterface.js +240 -0
- package/src/llm/LLMParameterUI.js +577 -0
- package/src/math/Mat4x4.js +708 -0
- package/src/math/Projection.js +341 -0
- package/src/math/Rotor4D.js +637 -0
- package/src/math/Vec4.js +476 -0
- package/src/math/constants.js +164 -0
- package/src/math/index.js +68 -0
- package/src/math/projections.js +54 -0
- package/src/math/rotations.js +196 -0
- package/src/quantum/QuantumEngine.js +906 -0
- package/src/quantum/QuantumVisualizer.js +1103 -0
- package/src/reactivity/ReactivityConfig.js +499 -0
- package/src/reactivity/ReactivityManager.js +586 -0
- package/src/reactivity/SpatialInputSystem.js +1783 -0
- package/src/reactivity/index.js +93 -0
- package/src/render/CommandBuffer.js +465 -0
- package/src/render/MultiCanvasBridge.js +340 -0
- package/src/render/RenderCommand.js +514 -0
- package/src/render/RenderResourceRegistry.js +523 -0
- package/src/render/RenderState.js +552 -0
- package/src/render/RenderTarget.js +512 -0
- package/src/render/ShaderLoader.js +253 -0
- package/src/render/ShaderProgram.js +599 -0
- package/src/render/UnifiedRenderBridge.js +496 -0
- package/src/render/backends/WebGLBackend.js +1108 -0
- package/src/render/backends/WebGPUBackend.js +1409 -0
- package/src/render/commands/CommandBufferExecutor.js +607 -0
- package/src/render/commands/RenderCommandBuffer.js +661 -0
- package/src/render/commands/index.js +17 -0
- package/src/render/index.js +367 -0
- package/src/scene/Disposable.js +498 -0
- package/src/scene/MemoryPool.js +618 -0
- package/src/scene/Node4D.js +697 -0
- package/src/scene/ResourceManager.js +599 -0
- package/src/scene/Scene4D.js +540 -0
- package/src/scene/index.js +98 -0
- package/src/schemas/error.schema.json +84 -0
- package/src/schemas/extension.schema.json +88 -0
- package/src/schemas/index.js +214 -0
- package/src/schemas/parameters.schema.json +142 -0
- package/src/schemas/tool-pack.schema.json +44 -0
- package/src/schemas/tool-response.schema.json +127 -0
- package/src/shaders/common/fullscreen.vert.glsl +5 -0
- package/src/shaders/common/fullscreen.vert.wgsl +17 -0
- package/src/shaders/common/geometry24.glsl +65 -0
- package/src/shaders/common/geometry24.wgsl +54 -0
- package/src/shaders/common/rotation4d.glsl +85 -0
- package/src/shaders/common/rotation4d.wgsl +86 -0
- package/src/shaders/common/uniforms.glsl +44 -0
- package/src/shaders/common/uniforms.wgsl +48 -0
- package/src/shaders/faceted/faceted.frag.glsl +129 -0
- package/src/shaders/faceted/faceted.frag.wgsl +164 -0
- package/src/shaders/holographic/holographic.frag.glsl +406 -0
- package/src/shaders/holographic/holographic.frag.wgsl +185 -0
- package/src/shaders/quantum/quantum.frag.glsl +513 -0
- package/src/shaders/quantum/quantum.frag.wgsl +361 -0
- package/src/testing/ParallelTestFramework.js +519 -0
- package/src/testing/__snapshots__/exportFormats.test.js.snap +24 -0
- package/src/testing/exportFormats.test.js +8 -0
- package/src/testing/projections.test.js +14 -0
- package/src/testing/rotations.test.js +37 -0
- package/src/ui/InteractivityMenu.js +516 -0
- package/src/ui/StatusManager.js +96 -0
- package/src/ui/adaptive/renderers/webgpu/BufferLayout.ts +252 -0
- package/src/ui/adaptive/renderers/webgpu/PolytopeInstanceBuffer.ts +144 -0
- package/src/ui/adaptive/renderers/webgpu/TripleBufferedUniform.ts +170 -0
- package/src/ui/adaptive/renderers/webgpu/WebGPURenderer.ts +735 -0
- package/src/ui/adaptive/renderers/webgpu/index.ts +112 -0
- package/src/variations/VariationManager.js +431 -0
- package/src/viewer/AudioReactivity.js +505 -0
- package/src/viewer/CardBending.js +481 -0
- package/src/viewer/GalleryUI.js +832 -0
- package/src/viewer/ReactivityManager.js +590 -0
- package/src/viewer/TradingCardExporter.js +600 -0
- package/src/viewer/ViewerPortal.js +374 -0
- package/src/viewer/index.js +12 -0
- package/src/wasm/WasmLoader.js +296 -0
- package/src/wasm/index.js +132 -0
- package/tools/agentic/mcpTools.js +88 -0
- package/tools/cli/agent-cli.js +92 -0
- package/tools/export/formats.js +24 -0
- package/tools/math/rotation-baseline.mjs +64 -0
- package/tools/shader-sync-verify.js +937 -0
- package/tools/telemetry/manifestPipeline.js +141 -0
- package/tools/telemetry/telemetryEvents.js +35 -0
- package/types/adaptive-sdk.d.ts +185 -0
- package/types/advanced/AIPresetGenerator.d.ts +81 -0
- package/types/advanced/MIDIController.d.ts +100 -0
- package/types/advanced/OffscreenWorker.d.ts +82 -0
- package/types/advanced/WebGPUCompute.d.ts +52 -0
- package/types/advanced/WebXRRenderer.d.ts +77 -0
- package/types/advanced/index.d.ts +46 -0
- package/types/core/ErrorReporter.d.ts +50 -0
- package/types/core/VIB3Engine.d.ts +204 -0
- package/types/creative/ColorPresetsSystem.d.ts +91 -0
- package/types/creative/ParameterTimeline.d.ts +74 -0
- package/types/creative/PostProcessingPipeline.d.ts +109 -0
- package/types/creative/TransitionAnimator.d.ts +71 -0
- package/types/creative/index.d.ts +35 -0
- package/types/integrations/FigmaPlugin.d.ts +46 -0
- package/types/integrations/OBSMode.d.ts +74 -0
- package/types/integrations/ThreeJsPackage.d.ts +62 -0
- package/types/integrations/TouchDesignerExport.d.ts +36 -0
- package/types/integrations/Vib3React.d.ts +74 -0
- package/types/integrations/Vib3Svelte.d.ts +63 -0
- package/types/integrations/Vib3Vue.d.ts +55 -0
- package/types/integrations/index.d.ts +52 -0
- package/types/reactivity/SpatialInputSystem.d.ts +173 -0
- package/types/reactivity/index.d.ts +394 -0
- package/types/render/CommandBuffer.d.ts +169 -0
- package/types/render/RenderCommand.d.ts +312 -0
- package/types/render/RenderState.d.ts +279 -0
- package/types/render/RenderTarget.d.ts +254 -0
- package/types/render/ShaderProgram.d.ts +277 -0
- package/types/render/UnifiedRenderBridge.d.ts +143 -0
- package/types/render/WebGLBackend.d.ts +168 -0
- package/types/render/WebGPUBackend.d.ts +186 -0
- 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
|
+
}
|