From 4e581d5664ced63c3b2732dd849ab44f885ae817 Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Fri, 8 Aug 2025 13:47:30 +0200 Subject: [PATCH] Add final-raw heatmap --- lib/www/client/source/src/views/Map.vue | 48 ++++++++++++++++++- .../source/src/views/MapLayersMixin.vue | 26 +++++++++- 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/lib/www/client/source/src/views/Map.vue b/lib/www/client/source/src/views/Map.vue index db82fb9..3eb779c 100644 --- a/lib/www/client/source/src/views/Map.vue +++ b/lib/www/client/source/src/views/Map.vue @@ -79,6 +79,30 @@ + + + + + + Δij Total error + + + + + Δj Inline error + + + + + Δi Crossline error + + + + @@ -274,7 +298,7 @@ Final data - + Events @@ -636,6 +660,7 @@ export default { let title = this.heatmapValue; switch (this.heatmapValue) { + // Raw vs preplot case "total_error": title = "Total position error (raw data)"; break; @@ -645,6 +670,19 @@ export default { case "delta_j": title = "Total inline position error (raw data)"; break; + + // Final vs raw (c-o) + case "co_total_error": + title = "Total position error (final vs raw)"; + break; + case "co_delta_i": + title = "Total crossline position error (final vs raw)"; + break; + case "co_delta_j": + title = "Total inline position error (final vs raw)"; + break; + + // Gun deltas case "delta_μ": title = "Guns mean delta error"; break; @@ -654,6 +692,8 @@ export default { case "delta_R": title = "Guns delta range"; break; + + // Gun pressure case "press_μ": title = "Fired array guns mean pressure"; break; @@ -663,6 +703,8 @@ export default { case "press_R": title = "Fired array pressure range"; break; + + // Gun depth case "depth_μ": title = "Guns mean depth"; break; @@ -672,6 +714,8 @@ export default { case "depth_R": title = "Gun depth range"; break; + + // Gun fill time case "fill_μ": title = "Guns mean fill time"; break; @@ -681,6 +725,8 @@ export default { case "fill_R": title = "Guns fill time range"; break; + + // Gun delay case "delay_μ": title = "Guns mean firing delay"; break; diff --git a/lib/www/client/source/src/views/MapLayersMixin.vue b/lib/www/client/source/src/views/MapLayersMixin.vue index 1219d0a..73f287f 100644 --- a/lib/www/client/source/src/views/MapLayersMixin.vue +++ b/lib/www/client/source/src/views/MapLayersMixin.vue @@ -485,7 +485,10 @@ export default { }, heatmapLayer(options = {}) { - const { positions, values } = this.sequenceBinaryData; + const { positions, values } = this.heatmapValue?.startsWith("co_") + ? this.sequenceBinaryDataFinal + : this.sequenceBinaryData; + if (!positions?.length || !values?.length) { console.warn('No valid data for heatmapLayer'); @@ -518,8 +521,27 @@ export default { case "delta_j": weights = values[4]; scaler = 0.1; - colorDomain = [0.5, 5]; + colorDomain = [10, 80]; // scale: 100 (0.1 ‒ 0.8 m) break; + + case "co_total_error": + weights = Float32Array.from(values[3], (ei, i) => { + const ej = values[4][i]; + return Math.sqrt(ei * ei + ej * ej) / 100; // Euclidean distance in meters + }); + colorDomain = [10, 150]; // Scale: 100 (0.1 ‒ 1 m) + break; + case "co_delta_i": + weights = values[5]; + scaler = 0.1; + colorDomain = [10, 150]; + break; + case "co_delta_j": + weights = values[6]; + scaler = 0.1; + colorDomain = [0.2, 2]; + break; + case "delta_μ": weights = values[5]; scaler = 0.1;