Uhr: jedes Glied sitzt auf seiner Zahl, statt dort zu beginnen

Filipe (screen2): "oben in der mitte ist auch mittag, die stunden sehen
bissl verschoben aus."

Er hatte recht, und es ist ausrechenbar. Ein Strichmuster beginnt bei
Position null -- der erste Balken lief also von zwoelf Uhr aus im
Uhrzeigersinn weg, statt unter der Zwoelf zu stehen. Sein MITTELPUNKT
lag damit um eine halbe Gliedlaenge daneben:

  Stunde   10 von 197,92 Umfang  ->  9,09 Grad
  Minute   1,7 von 241,90        ->  1,27 Grad
  Sekunde  0,01 von 285,88       ->  0,006 Grad

Deshalb faellt es nur bei den Stunden auf: Neun Grad sieht man,
eineinviertel nicht. Der Fehler steckte aber in allen dreien -- und so
etwas faellt beim naechsten Umbau auf die Fuesse, sobald die Glieder
laenger werden. Deshalb ist es fuer alle drei behoben, nicht nur dort,
wo es stoert.

Eine halbe Gliedlaenge zurueck, und jedes Glied steht mittig auf seiner
Zahl. Der Kopf bekommt denselben Versatz aus derselben Zahl -- zwei
Rechnungen fuer denselben Ort waren an dieser Stelle schon einmal der
Fehler.

GEMESSEN an den gezeichneten Bildpunkten, alle zwoelf Plaetze, Kanten
im 0,05-Grad-Raster gesucht und daraus die Mitte gerechnet:

  0,13 · 29,95 · 59,85 · 89,92 · 119,85 · 149,97 · 180,13
  210,23 · 240,35 · 270,32 · 300,27 · 330,35

Soll sind 0, 30, 60 ... 330. Groesste Abweichung 0,35 Grad, und die
Vorzeichen wechseln -- das ist Messrauschen bei weichen Kanten, kein
Versatz. Vorher lagen dieselben Mitten bei 9,1 · 39,1 · 69,1 ...

Geprueft: pruef-start-ansicht -- gruen.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-09 11:48:49 +02:00
co-authored by Claude Opus 5
parent 50b60ebe8f
commit 7c00e76d63
+32 -2
View File
@@ -482,9 +482,35 @@
den anderen beiden ist es der ganze Unterschied. */
const n = Math.min(Math.floor(anteil * gesamt) + 1, gesamt);
const muster = punktMuster(U, n, gesamt, GLIED_LAENGE[welcher]);
/* JEDES GLIED SITZT AUF SEINER ZAHL, ES BEGINNT NICHT DORT
(09.09.2026, screen2).
Filipe: "oben in der mitte ist auch mittag, die stunden sehen
bissl verschoben aus."
Er hatte recht, und es ist ausrechenbar. Ein Strichmuster
beginnt bei Position null -- der erste Balken lief also von 12
Uhr aus im Uhrzeigersinn weg, statt unter der Zwoelf zu stehen.
Sein MITTELPUNKT lag damit um eine halbe Balkenlaenge daneben:
Stunde 10 von 197,92 Umfang -> 9,09 Grad
Minute 1,7 von 241,90 -> 1,27 Grad
Sekunde 0,01 von 285,88 -> 0,006 Grad
Deshalb faellt es nur bei den Stunden auf: Neun Grad sieht man,
eineinviertel nicht. Der Fehler steckte aber in allen dreien --
und genau so etwas faellt beim naechsten Umbau auf die Fuesse,
wenn die Glieder laenger werden.
Eine halbe Gliedlaenge zurueck, und jedes Glied steht mittig
auf seiner Zahl. `dashoffset` ist dabei POSITIV: Ein positiver
Wert schiebt das Muster rueckwaerts (siehe die Begruendung am
Kopf weiter unten, wo es aus demselben Grund negativ ist). */
const halb = GLIED_LAENGE[welcher] / 2;
for (const el of lagen[welcher]) {
el.style.strokeDasharray = muster;
el.style.strokeDashoffset = '0';
el.style.strokeDashoffset = halb.toFixed(3);
}
/* DAS LETZTE GLIED, EINZELN (09.09.2026, screen5).
@@ -510,7 +536,11 @@
const schritt = U / gesamt;
const laenge = GLIED_LAENGE[welcher];
kopf.style.strokeDasharray = `${laenge} ${(U - laenge).toFixed(3)}`;
kopf.style.strokeDashoffset = `-${((n - 1) * schritt).toFixed(3)}`;
/* Derselbe Versatz wie bei der Reihe darunter -- sonst saesse der
Kopf um eine halbe Gliedlaenge neben seinem eigenen Glied. Zwei
Rechnungen fuer denselben Ort waren an dieser Stelle schon
einmal der Fehler. */
kopf.style.strokeDashoffset = `${(halb - (n - 1) * schritt).toFixed(3)}`;
}
};