2D-Massstab: dpi-Berechnung fälschlich mit devicePixelRatio multipliziert
CSS-Pixel sind laut Spezifikation physisch konstant 1/96 Zoll, unabhängig von devicePixelRatio (der beschreibt nur die Geräte-Pixel-Dichte hinter einem CSS-Pixel, relevant für Rasterungs-Schärfe, nicht für die physische Grösse). Die Papier-Massstab-Umrechnung in PlanView.tsx nahm bisher 96 * devicePixelRatio an und verfälschte dadurch den angezeigten wie gemessenen Massstab auf jedem Retina-/HiDPI-Bildschirm um genau den Faktor devicePixelRatio (per Lineal am Bildschirm nachgemessen). Betrifft nur die Bildschirmanzeige, nicht den PDF/DXF-Export (eigene Berechnung).
This commit is contained in:
@@ -98,10 +98,12 @@ screenWidth_mm = canvasWidthCssPx * 25.4 / dpi
|
||||
N (1:N) = frustumWidth_mm / screenWidth_mm
|
||||
```
|
||||
- **Nur bei Orthografie** sinnvoll; in Perspektive zeigt die UI „—" (wie DOSSIER).
|
||||
- **DPI:** Browser kennt das nativ — `dpi = 96 * window.devicePixelRatio` (CSS
|
||||
definiert 1 px = 1/96 inch). Das ersetzt DOSSIERs CoreGraphics-JXA-Detection
|
||||
komplett und ist exakter. Optional manuell kalibrierbar (Eingabe in den
|
||||
Settings), persistiert pro Projekt.
|
||||
- **DPI:** fest `dpi = 96` (CSS definiert 1 CSS-px = 1/96 inch, UNABHÄNGIG von
|
||||
`window.devicePixelRatio` — der Browser hält CSS-px physisch konstant, egal
|
||||
wie viele Geräte-px auf Retina/HiDPI dahinterstecken; `devicePixelRatio` mit
|
||||
hineinzumultiplizieren verdoppelt/halbiert den Massstab auf jedem Retina-
|
||||
Bildschirm, per Lineal nachgemessen). Optional manuell kalibrierbar (Eingabe
|
||||
in den Settings), persistiert pro Projekt — bisher nicht gebaut.
|
||||
- **Massstab setzen** (1:N → Zoom): `frustumWidth_world = screenWidth_mm · N /
|
||||
1000`; bei `THREE.OrthographicCamera` `camera.zoom = canvasWidthCssPx /
|
||||
(frustumWidth_world / metersPerPixelAtZoom1)` bzw. direkt `left/right` setzen.
|
||||
|
||||
Reference in New Issue
Block a user