weisse Kugeln
This commit is contained in:
@@ -73,8 +73,9 @@
|
|||||||
<div class="legend">
|
<div class="legend">
|
||||||
<span><span class="dot" style="background:#22c55e"></span>Erkannt</span>
|
<span><span class="dot" style="background:#22c55e"></span>Erkannt</span>
|
||||||
<span><span class="dot" style="background:#ef4444"></span>Nicht erkannt</span>
|
<span><span class="dot" style="background:#ef4444"></span>Nicht erkannt</span>
|
||||||
<span><span class="dot circle" style="background:#3b82f6"></span>Erkannt, nur 2D</span>
|
<span><span class="dot circle" style="background:#fde68a"></span>Erkannt (nur 2D)</span>
|
||||||
<span><span class="dot circle" style="background:#fbbf24"></span>Gemessen (3b)</span>
|
<span><span class="dot circle" style="background:#fbbf24"></span>Gemessen (3b)</span>
|
||||||
|
<span><span class="dot circle" style="background:#3b82f6"></span>Fremd (3b)</span>
|
||||||
<span><span class="dot" style="background:#9b7bff"></span>Kamera</span>
|
<span><span class="dot" style="background:#9b7bff"></span>Kamera</span>
|
||||||
</div>
|
</div>
|
||||||
<span id="stats"></span>
|
<span id="stats"></span>
|
||||||
@@ -249,6 +250,7 @@ function buildScene(data) {
|
|||||||
|
|
||||||
// ── Gemessene Positionen von 3b (gelbe Punkte) ──
|
// ── Gemessene Positionen von 3b (gelbe Punkte) ──
|
||||||
let nTriangulated = 0;
|
let nTriangulated = 0;
|
||||||
|
let nUnknown = 0; // triangulierte Marker ohne Board-Eintrag
|
||||||
const measuredById = {};
|
const measuredById = {};
|
||||||
|
|
||||||
if (measuredMarkers?.markers?.length > 0) {
|
if (measuredMarkers?.markers?.length > 0) {
|
||||||
@@ -275,6 +277,17 @@ function buildScene(data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ── Blaue Kugeln: triangulierte Marker, die NICHT in boardMarkers stehen ──
|
||||||
|
// (unbekannte IDs oder andere Links – keine Modellposition vorhanden)
|
||||||
|
const unknownTriangulated = measuredMarkers.markers.filter(m =>
|
||||||
|
!boardMarkers.some(bm => bm.id === m.marker_id)
|
||||||
|
);
|
||||||
|
for (const m of unknownTriangulated) {
|
||||||
|
nUnknown++;
|
||||||
|
const mpos = r2vArr(m.position_mm);
|
||||||
|
gMeasured.add(makeSphere(mpos, 0.0055, 0x3b82f6));
|
||||||
|
}
|
||||||
|
|
||||||
// Kamera-Frusta aus 3b
|
// Kamera-Frusta aus 3b
|
||||||
if (measuredMarkers.cameras?.length > 0) {
|
if (measuredMarkers.cameras?.length > 0) {
|
||||||
for (const c of measuredMarkers.cameras) {
|
for (const c of measuredMarkers.cameras) {
|
||||||
@@ -288,14 +301,14 @@ function buildScene(data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Blaue Kugeln: Board-Marker erkannt, aber nicht trianguliert ──
|
// ── Helle Kugeln: Board-Marker erkannt, aber nicht trianguliert ──
|
||||||
// (nur 1 Kamera sah den Marker, oder 3b lief nicht)
|
// (nur 1 Kamera sah den Marker, oder 3b lief nicht)
|
||||||
let nDetectedNotTriangulated = 0;
|
let nDetectedNotTriangulated = 0;
|
||||||
for (const m of boardMarkers) {
|
for (const m of boardMarkers) {
|
||||||
if (detectedIds.has(m.id) && !Object.hasOwn(measuredById, m.id)) {
|
if (detectedIds.has(m.id) && !Object.hasOwn(measuredById, m.id)) {
|
||||||
nDetectedNotTriangulated++;
|
nDetectedNotTriangulated++;
|
||||||
const pos = r2vArr(m.position);
|
const pos = r2vArr(m.position);
|
||||||
gMeasured.add(makeSphere(pos, 0.0055, 0x3b82f6));
|
gMeasured.add(makeSphere(pos, 0.0055, 0xfde68a));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -323,12 +336,11 @@ function buildScene(data) {
|
|||||||
const triInfo = measuredMarkers === null
|
const triInfo = measuredMarkers === null
|
||||||
? ' │ 3b: –'
|
? ' │ 3b: –'
|
||||||
: ` │ 3b: ${nTriangulated}`;
|
: ` │ 3b: ${nTriangulated}`;
|
||||||
const only2dInfo = nDetectedNotTriangulated > 0
|
const only2dInfo = nDetectedNotTriangulated > 0 ? ` │ nur 2D: ${nDetectedNotTriangulated}` : '';
|
||||||
? ` │ nur 2D: ${nDetectedNotTriangulated}`
|
const unknownInfo = nUnknown > 0 ? ` │ fremd: ${nUnknown}` : '';
|
||||||
: '';
|
|
||||||
|
|
||||||
document.getElementById('stats').textContent =
|
document.getElementById('stats').textContent =
|
||||||
`Erkannt ${nDetected}/${boardMarkers.length}${triInfo}${only2dInfo}` +
|
`Erkannt ${nDetected}/${boardMarkers.length}${triInfo}${only2dInfo}${unknownInfo}` +
|
||||||
(camInfo ? ` │ RMS: ${camInfo}` : '');
|
(camInfo ? ` │ RMS: ${camInfo}` : '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user