Upgrade the 3D color gamut visualization engine from 2D polar Delaunay triangulation to true 3D surface convex hull / Delaunay tetrahedral boundary mesh generation in CIELAB space. Implement touch gesture controls (pinch zoom, two-finger pan/rotate) in OrbitControls.js.
Scope & Technical Requirements
Replace delaunator.min.js 2D spherical projection with a 3D convex hull / Alpha-shape algorithm operating directly on (L^*, a^*, b^*) vertex coordinates extracted from .gam files.
Resolve geometry distortion on concave or re-entrant gamut volumes (e.g. saturated dark cyans and magentas).
Implement touch handlers for touchstart, touchmove, and touchend in src/js/OrbitControls.js (resolving existing TODOs).
Acceptance Criteria
3D Gamut surface vertices are correctly triangulated in 3D Lab space without overlapping or distorted facets.
Touch gestures (one-finger rotate, two-finger pinch-zoom, two-finger pan) work smoothly on touch devices.
No performance regression when rendering 500+ vertex gamut meshes with sRGB wireframe overlay.
Dependencies & Ordering
Milestone: Milestone 8 (v0.3.0)
Ordering: Step 5
Dependencies: None
### Description
Upgrade the 3D color gamut visualization engine from 2D polar Delaunay triangulation to true 3D surface convex hull / Delaunay tetrahedral boundary mesh generation in CIELAB space. Implement touch gesture controls (pinch zoom, two-finger pan/rotate) in `OrbitControls.js`.
### Scope & Technical Requirements
- Replace `delaunator.min.js` 2D spherical projection with a 3D convex hull / Alpha-shape algorithm operating directly on $(L^*, a^*, b^*)$ vertex coordinates extracted from `.gam` files.
- Resolve geometry distortion on concave or re-entrant gamut volumes (e.g. saturated dark cyans and magentas).
- Implement touch handlers for `touchstart`, `touchmove`, and `touchend` in `src/js/OrbitControls.js` (resolving existing TODOs).
### Acceptance Criteria
- [ ] 3D Gamut surface vertices are correctly triangulated in 3D Lab space without overlapping or distorted facets.
- [ ] Touch gestures (one-finger rotate, two-finger pinch-zoom, two-finger pan) work smoothly on touch devices.
- [ ] No performance regression when rendering 500+ vertex gamut meshes with sRGB wireframe overlay.
### Dependencies & Ordering
- **Milestone**: Milestone 8 (`v0.3.0`)
- **Ordering**: Step 5
- **Dependencies**: None
gronod
added this to the Milestone 8: Advanced Measurement & Workflow Enhancements (v0.3.0) milestone 2026-08-25 15:47:47 +01:00
Geometry: Replace Delaunator in gamut_viewer.js with Three’s ConvexGeometry on points ((a^, L^, b^*)).
Touch: Sync OrbitControls with upstream three.js controls.
Licence: MIT is permissive and compatible with a proprietary host app. Keep the MIT notice in third-party attributions.
Drop delaunator.min.js once the 3D hull path is verified.
Geometry: Replace Delaunator in gamut_viewer.js with Three’s ConvexGeometry on points \((a^*, L^*, b^*)\).
Touch: Sync OrbitControls with upstream three.js controls.
Licence: MIT is permissive and compatible with a proprietary host app. Keep the MIT notice in third-party attributions.
Drop delaunator.min.js once the 3D hull path is verified.
Completed and merged via PR #101.
- Implemented 3D QuickHull in CIELAB space to triangulate true 3D gamut volumes without polar Delaunay distortion.
- Configured multi-touch gestures (rotate, pinch-to-zoom, pan) in `OrbitControls.js` and set `touch-action: none` on the WebGL canvas.
- Removed obsolete `delaunator.min.js` script tag.
- All CI test runs (#7133 and #7134) passed.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Description
Upgrade the 3D color gamut visualization engine from 2D polar Delaunay triangulation to true 3D surface convex hull / Delaunay tetrahedral boundary mesh generation in CIELAB space. Implement touch gesture controls (pinch zoom, two-finger pan/rotate) in
OrbitControls.js.Scope & Technical Requirements
delaunator.min.js2D spherical projection with a 3D convex hull / Alpha-shape algorithm operating directly on(L^*, a^*, b^*)vertex coordinates extracted from.gamfiles.touchstart,touchmove, andtouchendinsrc/js/OrbitControls.js(resolving existing TODOs).Acceptance Criteria
Dependencies & Ordering
v0.3.0)Geometry: Replace Delaunator in gamut_viewer.js with Three’s ConvexGeometry on points ((a^, L^, b^*)).
Touch: Sync OrbitControls with upstream three.js controls.
Licence: MIT is permissive and compatible with a proprietary host app. Keep the MIT notice in third-party attributions.
Drop delaunator.min.js once the 3D hull path is verified.
Completed and merged via PR #101.
OrbitControls.jsand settouch-action: noneon the WebGL canvas.delaunator.min.jsscript tag.