feat(gamut): Full 3D Delaunay / Convex Hull mesh generation in CIELAB space & touch gestures #89

Closed
opened 2026-08-25 15:47:47 +01:00 by gronod · 2 comments
Owner

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
### 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
gronod added the Kind/Feature
Priority
Medium
3
labels 2026-08-25 15:47:47 +01:00
gronod added
Priority
Low
4
and removed
Priority
Medium
3
labels 2026-08-25 15:52:12 +01:00
Author
Owner

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.
gronod added the
Reviewed
Confirmed
1
label 2026-08-25 16:37:40 +01:00
Author
Owner

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.
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.
Sign in to join this conversation.