Skip to content

Commit c0db5a2

Browse files
committed
Fiks: orienteringsbevisst høyde i sikt, ærlig 2-stjerners kalibreringsetikett (cache v22)
1 parent 0f8bb12 commit c0db5a2

3 files changed

Lines changed: 28 additions & 8 deletions

File tree

shared.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,10 +1193,14 @@ function buildCalibration(points){
11931193
var m1 = p1.azMeas, m2 = p1.azMeas + angDiffDeg(p2.azMeas, p1.azMeas);
11941194
var t1 = p1.azTrue, t2 = p1.azTrue + angDiffDeg(p2.azTrue, p1.azTrue);
11951195
var dm = (m2 - m1);
1196-
var azScale = Math.abs(dm) > 5 ? (t2 - t1) / dm : 1;
1196+
// For nær hverandre i azimut (<5°): skala blir ustabil — fall tilbake til ren
1197+
// offset og merk det ærlig, så brukeren ikke tror de fikk skala-korreksjon.
1198+
var hasScale = Math.abs(dm) > 5;
1199+
var azScale = hasScale ? (t2 - t1) / dm : 1;
11971200
var azOffset = t1 - azScale * m1;
11981201
var altOffset = ((p1.altTrue - p1.altMeas) + (p2.altTrue - p2.altMeas)) / 2;
1199-
cal = { azOffset: azOffset, altOffset: altOffset, azScale: azScale, type:'2-stjerner' };
1202+
cal = { azOffset: azOffset, altOffset: altOffset, azScale: azScale,
1203+
type: hasScale ? '2-stjerner' : '2-stjerner (kun offset — velg stjerner lenger fra hverandre)' };
12001204
}
12011205
// behold punktene (med stjernenavn) + tidsstempel for oversikt/utløp
12021206
cal.points = points.slice(0, 2);

sikt.html

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,15 +205,31 @@ <h1>Assistert <em>sikting</em></h1>
205205
if (typeof e.webkitCompassHeading === 'number'){ az = e.webkitCompassHeading; }
206206
else if (e.alpha != null){ az = 360 - e.alpha; } // alpha øker mot klokka
207207
else return;
208-
// beta: forover/bakover-vipp (-180..180). Når du sikter langs tuben i landskaps-
209-
// /portrettmodus brukes beta som «høyde» grovt. Vi tar 90 - |beta| justering enkelt:
210-
var alt = (e.beta != null) ? (e.beta - 0) : 0;
211-
// normaliser alt til -90..90 (telefon flatt = 0 vipp ≈ peker mot horisonten når reist)
212-
if (alt > 90) alt = 180 - alt; if (alt < -90) alt = -180 - alt;
208+
// Høyde fra vipp. Telefonen ligger flatt på tuben (skjerm opp, toppkant mot
209+
// der tuben peker): flatt = horisont (0°), reist mot senit = 90°.
210+
// Portrett bruker beta; i landskap/opp-ned er det gamma/−beta som er pitch
211+
// langs samme akse. Standard skjermorienterings-konvensjon (uendret i portrett):
212+
var alt = devicePitch(e);
213213
rawAz = ((az % 360) + 360) % 360;
214214
rawAlt = alt;
215215
sensorOK = true;
216216
}
217+
// Pitch (høyde) langs telefonens toppkant, uavhengig av skjermrotasjon.
218+
function devicePitch(e){
219+
var beta = (e.beta != null) ? e.beta : 0;
220+
var gamma = (e.gamma != null) ? e.gamma : 0;
221+
var so = 0;
222+
if (window.screen && screen.orientation && typeof screen.orientation.angle === 'number') so = screen.orientation.angle;
223+
else if (typeof window.orientation === 'number') so = (window.orientation + 360) % 360;
224+
var alt;
225+
if (so === 90) alt = -gamma; // landskap (rotert mot klokka)
226+
else if (so === 270) alt = gamma; // landskap (rotert med klokka)
227+
else if (so === 180) alt = -beta; // portrett opp-ned
228+
else alt = beta; // portrett (uendret oppførsel)
229+
// fold til −90..90
230+
if (alt > 90) alt = 180 - alt; if (alt < -90) alt = -180 - alt;
231+
return alt;
232+
}
217233

218234
// ---- Kalibreringsstatus ----
219235
function renderCalStatus(){

sw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Stjernekikkert service worker (PERF-3) — offline-støtte.
22
// Cache-first for app-skall; nett-fallback for alt annet (f.eks. vær-API senere).
3-
var CACHE = 'stjernekikkert-v21';
3+
var CACHE = 'stjernekikkert-v22';
44
var ASSETS = [
55
'index.html',
66
'objekter.html',

0 commit comments

Comments
 (0)