Lambert-Cosine-Law in der UV-Simulation
Erfasst: 2026-04-27 (Engine-Foundation Phase 1, internes UV-Verständnis)
Bezug: system-typen-taxonomie.md "Cosine-Inzidenz-Architektur",
app/src/lib/engine/surface2d.ts:43-45,
Plan-File jolly-growing-pillow.md
Was das Lambert-Cosine-Law sagt
Wenn UV-Strahlung schräg auf eine Oberfläche trifft, fällt die effektive Bestrahlungsstärke auf dieser Oberfläche mit dem Kosinus des Einfallswinkels:
I_substrat = I_einfallend × cos(θ)
Wobei θ der Winkel zwischen Strahlrichtung und Oberflächen-Normale ist. Bei senkrechtem Auftreffen (θ = 0°) ist cos(θ) = 1 — volle Intensität. Bei Streifeinfall (θ → 90°) geht cos(θ) → 0 — die Energie verschmiert auf eine unendlich große Fläche, lokale Intensität geht auf null.
Warum das in der UV-Industrie relevant ist
Das ist nicht akademisch — es ist der Hauptgrund warum Industrie-UV-Anlagen nicht senkrecht bestrahlen:
Beispiel 1: Needle-Bonding Spritzennadel-Klebung
Konfiguration: Spritzennadel-Hub mit UV-Klebstoff-Tropfen, ein Punkt- Strahler darüber. Wenn der Strahler direkt senkrecht von oben strahlt, trifft er die zylindrische Nadel-Oberfläche tangential — der Großteil der UV-Energie geht am Hub vorbei in die Umgebung. Lambert-Faktor an den Seitenflächen der Nadel wird sehr klein.
Praxis-Lösung: 2 schräge Strahler (typisch 30-45° gegen Vertikale) treffen die zylindrische Nadel-Oberfläche näher an cos(θ) = 1 — die Energie wird effektiv an den Seitenflächen deponiert wo der Klebstoff sitzt.
Beispiel 2: Förderband-Linienstrahler
Konfiguration: Linienstrahler über dem Band, Substrat bewegt sich darunter durch. Wenn der Strahler senkrecht runterstrahlt, trifft die UV reflektiert zurück in den Strahler-Reflektor — Hitze-Akkumulation, vorzeitige LED- Alterung. Plus: Substrat-Reflexion verändert die effektive Dosis.
Praxis-Lösung: Strahler leicht angekippt (10-20° quer zur Bandrichtung). Reflexionen gehen an Reflektor vorbei, Substrat-Energy bleibt fast unverändert (bei kleinen Tilt-Winkeln ist cos(20°) ≈ 0.94 — nur 6% Verlust für massive Lampenschutz-Wirkung).
Beispiel 3: Flächige Coatings (Multi-LED-Arrays)
Konfiguration: mehrere LED-Bars nebeneinander für große Substrat-Flächen. LEDs am Array-Rand strahlen schräg auf das Substrat-Außenrand — Lambert- Faktor < 1 → Edge-Falloff der Coating-Härtung. Coating-Defekte (orange peel, under-cure) starten meist hier.
Praxis-Lösung: Substrat schmaler dimensionieren als Lampen-Array (typisch 80% der Lampen-Länge), so dass alle relevanten Substrat-Bereiche nahe cos(θ) = 1 liegen.
Wo unser Code das Lambert-Cosine-Law modelliert
Engine-Inventur (Stand 2026-04-27):
✓ Vorhanden in Surface2D-Layer
app/src/lib/engine/surface2d.ts:43-45:
// Physik: Fuer jede Lampe wird die Flaeche in Zellen unterteilt.
// Jede Zelle strahlt als Punktquelle mit Lambert-Kosinus ab:
// dI = (P_cell / π) × cos(θ) / r²
// wobei θ der Winkel zwischen Abstrahlrichtung und Lampennormale ist.
Surface2D ist das physikalisch korrekte Modell für Substrat-Bestrahlung. Hat schon Cosine-Faktor zwischen Lampen-Normale und Strahl. Wird heute primär für Hero-Animation-Vorschau und Box-Lampen-Quickcalc genutzt — Phase 1.2 NEU plant es als primären Berechnungs-Pfad für Curing-Apps zu aktivieren.
✓ Vorhanden in Lambert-Reflexion an Wänden
app/src/lib/engine/physics.ts:16-22:
export function lambertReflection(/* ... */) {
// I_reflected = I × rho × Math.max(0, cosTheta) / π
// cosTheta = Math.abs(vec.dot(dir, normal[i]))
}
Wenn ein Strahl auf eine Reflektor-Wand trifft, wird die reflektierte Intensität nach Lambert verteilt. Das ist korrekt für matte/diffuse Wandmaterialien (Aluminium-Reflektor, weiße Coatings).
✓ Vorhanden in Strahl-Emission (Zylinder + Box)
app/src/lib/engine/ray-tracer.ts:394-412 cosineWeightedHemisphere() wird
bei Zylinder- und Box-Lampen-Emission angewandt — Lampen strahlen Lambert-
artig ab (mehr Strahlen Richtung Normale, weniger streifend). Phase 1.1
hat das jetzt auch optional für Punkt-Lampen via beamAngle Top-Hat-Cone
(nicht ganz Lambert, aber Industrie-Konvention).
✗ Fehlt im Voxel-Grid-Volumetric-Modell
ray-tracer.ts deponiert Energie linear entlang Strahlpfad in Voxel ohne
Cosine-Korrektur zur Substrat-Oberflächen-Normale. Konzeptionell korrekt:
das Voxel-Grid modelliert Volumen-Energie (Wasser/Luft), nicht Oberflächen-
Energie. Es macht keinen Sinn Cosine im Volumen anzuwenden — UV-Photonen
deponieren ihre Energie unabhängig von "Oberflächen-Normale" wenn sie durch
Wasser/Luft fliegen.
Architektur-Konsequenz
- Disinfection-Apps (Wasser, Luft): Voxel-Grid-Average ist physikalisch korrekt. Lambert nicht nötig auf Substrat-Layer (es gibt keinen Substrat- Layer, nur Volumen).
- Curing-Apps (Substrat, Coating): Surface2D ist physikalisch korrekt. Lambert IST nötig auf Substrat-Layer (Werkstück-Oberfläche).
Die App muss diese Unterscheidung klar machen: welche Berechnungs-Engine pro Use-Case aktiv ist. Phase 1.2 NEU: App-Layer-Routing implementieren.
Praktische Faustregel für Industrie-Planer
Wieviel Verlust bei welchem Tilt?
| Tilt-Winkel θ | cos(θ) | Verlust |
|---|---|---|
| 0° (senkrecht) | 1.000 | 0% |
| 10° | 0.985 | 1.5% |
| 15° | 0.966 | 3.4% |
| 20° | 0.940 | 6.0% |
| 30° | 0.866 | 13.4% |
| 45° | 0.707 | 29.3% |
| 60° | 0.500 | 50% |
| 75° | 0.259 | 74% |
| 90° (streifend) | 0.000 | 100% |
Faustregel: Bis 20° Tilt ist der Cosine-Verlust kaum messbar (<10%) — oft mehr als kompensiert durch Wegfall der Reflexion-Verluste in den Strahler-Reflektor zurück. Ab 30° wird der Verlust spürbar (>13%) — sollte in der Bestrahlungs-Zeit-Kalkulation berücksichtigt werden. Über 45° nur in Sondersituationen (Spritzennadel-Geometrien wo der Tilt-Winkel selbst das Werkstück trifft).
Verwirrungs-Falle: Inverse-Square vs. Cosine
Beide sind getrennte physikalische Effekte und superpositionieren:
I_substrat = I_lampe × cos(θ_einfall) / r²
↑ ↑
Lambert-Cosine Inverse-Square (Distanz²)
- Inverse-Square modelliert geometrische Spread: Photonen verteilen sich auf sphärische Kugel-Oberfläche, lokale Intensität ~1/r².
- Lambert-Cosine modelliert Treffer-Effizienz: schräg auftreffende Photonen verteilen ihre Energie auf größere Substrat-Fläche, lokale Intensität ~cos(θ).
Beide gleichzeitig zu beachten ist Standard in jeder seriösen Strahlen- Verteilungs-Berechnung (auch außerhalb UV — gleiches Prinzip in Photometrie, Computer-Grafik, Antennen-Engineering).
App-Implikation für Customer-Hinweise
In installationNotes der Curing-Apps sollten wir den User auf folgende
Punkte hinweisen:
⚠ Bei schräger Lampen-Anstellung sinkt die Substrat-Intensität nach Lambert. Bis 20° Tilt vernachlässigbar (<10% Verlust). Über 30° in der Aushärtungszeit-Kalkulation berücksichtigen oder Lampen-Power entsprechend höher dimensionieren. Tipp: 2-3 schräge Lampen aus verschiedenen Winkeln liefern oft homogenere Substrat-Beleuchtung als 1 senkrechte (besonders bei zylindrischen oder gewölbten Werkstücken).
(Dieser Hinweis kommt in Phase 5.4 / 7.3 in die App-Templates.)
Querverweise
system-typen-taxonomie.md— Cosine-Architektur-Entscheidung, warum Curing-Apps Surface2D nutzen solltenapp/src/lib/engine/surface2d.ts— Implementierung mit Cosine-Faktorapp/src/lib/engine/physics.ts:16-22—lambertReflection()für Wand-Reflexionenapp/src/lib/engine/ray-tracer.ts:108-122— Punkt-Lampe mitbeamAngle(Phase 1.1) undcosineWeightedHemisphere()(Phase 1.4 LED-Strip-LEDs)app/src/routes/(api)/api/simulate/+server.ts:placementToOrientation()— Tilt-State zu Engine-Orientation-Vector (Phase 2.1)
