@vib3code/sdk 2.0.3-canary.3b3ca18 → 2.0.3-canary.4874bcf
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/DOCS/AGENT_HARNESS_ARCHITECTURE.md +2 -0
- package/DOCS/ANDROID_DEPLOYMENT.md +59 -0
- package/DOCS/ARCHITECTURE.md +1 -0
- package/DOCS/CI_TESTING.md +2 -0
- package/DOCS/CLI_ONBOARDING.md +2 -0
- package/DOCS/CONTROL_REFERENCE.md +2 -0
- package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +2 -0
- package/DOCS/ENV_SETUP.md +2 -0
- package/DOCS/EPIC_SCROLL_EVENTS.md +2 -0
- package/DOCS/EXPANSION_DESIGN.md +2 -0
- package/DOCS/EXPANSION_DESIGN_ULTRA.md +2 -0
- package/DOCS/EXPORT_FORMATS.md +2 -0
- package/DOCS/GPU_DISPOSAL_GUIDE.md +2 -0
- package/DOCS/HANDOFF_LANDING_PAGE.md +2 -0
- package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +2 -0
- package/DOCS/LICENSING_TIERS.md +2 -0
- package/DOCS/MASTER_PLAN_2026-01-31.md +2 -0
- package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +3 -1
- package/DOCS/OBS_SETUP_GUIDE.md +2 -0
- package/DOCS/OPTIMIZATION_PLAN_MATH.md +1 -0
- package/DOCS/PRODUCT_STRATEGY.md +2 -0
- package/DOCS/PROJECT_SETUP.md +2 -0
- package/DOCS/README.md +5 -3
- package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +2 -0
- package/DOCS/RENDERER_LIFECYCLE.md +2 -0
- package/DOCS/REPO_MANIFEST.md +2 -0
- package/DOCS/ROADMAP.md +2 -0
- package/DOCS/SCROLL_TIMELINE_v3.md +2 -0
- package/DOCS/SITE_REFACTOR_PLAN.md +2 -0
- package/DOCS/STATUS.md +2 -0
- package/DOCS/SYSTEM_INVENTORY.md +2 -0
- package/DOCS/TELEMETRY_EXPORTS.md +2 -0
- package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +2 -0
- package/DOCS/VISUAL_ANALYSIS_FACETAD.md +2 -0
- package/DOCS/VISUAL_ANALYSIS_SIMONE.md +2 -0
- package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +2 -0
- package/DOCS/WEBGPU_STATUS.md +2 -0
- package/DOCS/XR_BENCHMARKS.md +2 -0
- package/DOCS/archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +1 -34
- package/DOCS/archive/DEV_TRACK_ANALYSIS.md +1 -80
- package/DOCS/archive/DEV_TRACK_PLAN_2026-01-07.md +1 -42
- package/DOCS/archive/SESSION_014_PLAN.md +1 -195
- package/DOCS/archive/SESSION_LOG_2026-01-07.md +1 -56
- package/DOCS/archive/STRATEGIC_BLUEPRINT_2026-01-07.md +1 -72
- package/DOCS/archive/SYSTEM_AUDIT_2026-01-30.md +1 -741
- package/DOCS/archive/WEBGPU_STATUS_2026-02-15_STALE.md +1 -38
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-01-31.md +2 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +2 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +2 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-15.md +2 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-16.md +2 -0
- package/DOCS/dev-tracks/PERF_UPGRADE_2026-02-16.md +2 -0
- package/DOCS/dev-tracks/README.md +2 -0
- package/package.json +2 -4
- package/src/cli/index.js +59 -5
- package/src/export/SVGExporter.js +9 -5
- package/src/features/CollectionManager.js +27 -9
- package/src/gallery/CollectionManager.js +27 -9
- package/src/geometry/warp/HypersphereCore.js +53 -24
- package/src/math/Mat4x4.js +272 -128
- package/src/math/Projection.js +57 -7
- package/src/math/Rotor4D.js +64 -28
- package/src/math/Vec4.js +65 -8
- package/src/quantum/QuantumVisualizer.js +28 -0
- package/src/scene/Node4D.js +74 -24
- package/src/testing/ProjectionClass.test.js +38 -0
- package/src/variations/VariationManager.js +6 -1
- package/src/wasm/WasmLoader.js +11 -6
- package/tools/update_projection.py +109 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
file_path = 'src/math/Projection.js'
|
|
4
|
+
|
|
5
|
+
with open(file_path, 'r') as f:
|
|
6
|
+
content = f.read()
|
|
7
|
+
|
|
8
|
+
# Replace perspective JSDoc and Implementation
|
|
9
|
+
perspective_old = r""" * @param {Vec4} v - 4D point
|
|
10
|
+
* @param {number} d - Distance parameter (typically 1.5-5)
|
|
11
|
+
* @returns {Vec4} Projected point (w=0)
|
|
12
|
+
*/
|
|
13
|
+
static perspective(v, d = 2, options = {}) {
|
|
14
|
+
if (typeof d === 'object') {
|
|
15
|
+
options = d;
|
|
16
|
+
d = options.d ?? 2;
|
|
17
|
+
}
|
|
18
|
+
const epsilon = options.epsilon ?? DEFAULT_EPSILON;
|
|
19
|
+
const denom = clampDenominator(d - v.w, epsilon);
|
|
20
|
+
const scale = 1 / denom;
|
|
21
|
+
return new Vec4(v.x * scale, v.y * scale, v.z * scale, 0);
|
|
22
|
+
}"""
|
|
23
|
+
|
|
24
|
+
perspective_new = r""" * @param {Vec4} v - 4D point
|
|
25
|
+
* @param {number} d - Distance parameter (typically 1.5-5)
|
|
26
|
+
* @param {object} [options] - Projection options
|
|
27
|
+
* @param {Vec4} [target] - Optional target vector to write result to
|
|
28
|
+
* @returns {Vec4} Projected point (w=0)
|
|
29
|
+
*/
|
|
30
|
+
static perspective(v, d = 2, options = {}, target = null) {
|
|
31
|
+
if (typeof d === 'object') {
|
|
32
|
+
options = d;
|
|
33
|
+
d = options.d ?? 2;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Handle options overload or direct target argument
|
|
37
|
+
if (!target && options && options.target) {
|
|
38
|
+
target = options.target;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const epsilon = (options && options.epsilon) ?? DEFAULT_EPSILON;
|
|
42
|
+
const denom = clampDenominator(d - v.w, epsilon);
|
|
43
|
+
const scale = 1 / denom;
|
|
44
|
+
|
|
45
|
+
if (target) {
|
|
46
|
+
return target.set(v.x * scale, v.y * scale, v.z * scale, 0);
|
|
47
|
+
}
|
|
48
|
+
return new Vec4(v.x * scale, v.y * scale, v.z * scale, 0);
|
|
49
|
+
}"""
|
|
50
|
+
|
|
51
|
+
if perspective_old in content:
|
|
52
|
+
content = content.replace(perspective_old, perspective_new)
|
|
53
|
+
else:
|
|
54
|
+
print("Could not find perspective implementation to replace.")
|
|
55
|
+
# Attempt more robust search if exact match fails? No, simpler is safer for now.
|
|
56
|
+
|
|
57
|
+
# Replace perspectiveArray JSDoc and Implementation
|
|
58
|
+
perspective_array_old = r""" /**
|
|
59
|
+
* Project array of Vec4s using perspective projection
|
|
60
|
+
* @param {Vec4[]} vectors
|
|
61
|
+
* @param {number} d
|
|
62
|
+
* @returns {Vec4[]}
|
|
63
|
+
*/
|
|
64
|
+
static perspectiveArray(vectors, d = 2, options = {}) {
|
|
65
|
+
return vectors.map(v => Projection.perspective(v, d, options));
|
|
66
|
+
}"""
|
|
67
|
+
|
|
68
|
+
perspective_array_new = r""" /**
|
|
69
|
+
* Project array of Vec4s using perspective projection
|
|
70
|
+
* @param {Vec4[]} vectors
|
|
71
|
+
* @param {number} d
|
|
72
|
+
* @param {object} [options]
|
|
73
|
+
* @param {Vec4[]} [target] - Optional target array to write results to
|
|
74
|
+
* @returns {Vec4[]}
|
|
75
|
+
*/
|
|
76
|
+
static perspectiveArray(vectors, d = 2, options = {}, target = null) {
|
|
77
|
+
// Handle options overload for 'd'
|
|
78
|
+
if (typeof d === 'object') {
|
|
79
|
+
options = d;
|
|
80
|
+
d = options.d ?? 2;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (!target) {
|
|
84
|
+
return vectors.map(v => Projection.perspective(v, d, options));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const count = vectors.length;
|
|
88
|
+
// Iterate and reuse
|
|
89
|
+
for (let i = 0; i < count; i++) {
|
|
90
|
+
const out = target[i];
|
|
91
|
+
if (out) {
|
|
92
|
+
Projection.perspective(vectors[i], d, options, out);
|
|
93
|
+
} else {
|
|
94
|
+
target[i] = Projection.perspective(vectors[i], d, options);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return target;
|
|
99
|
+
}"""
|
|
100
|
+
|
|
101
|
+
if perspective_array_old in content:
|
|
102
|
+
content = content.replace(perspective_array_old, perspective_array_new)
|
|
103
|
+
else:
|
|
104
|
+
print("Could not find perspectiveArray implementation to replace.")
|
|
105
|
+
|
|
106
|
+
with open(file_path, 'w') as f:
|
|
107
|
+
f.write(content)
|
|
108
|
+
|
|
109
|
+
print("Updated Projection.js")
|