← Wissen

Lambert-Cosine-Law — Geometrische Inzidenz, Surface2D-Architektur

Quelle: uv-simulation-app/docs/uv-knowledge/physics/lambert-cosine-law.md

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 sollten
  • app/src/lib/engine/surface2d.ts — Implementierung mit Cosine-Faktor
  • app/src/lib/engine/physics.ts:16-22lambertReflection() für Wand-Reflexionen
  • app/src/lib/engine/ray-tracer.ts:108-122 — Punkt-Lampe mit beamAngle (Phase 1.1) und cosineWeightedHemisphere() (Phase 1.4 LED-Strip-LEDs)
  • app/src/routes/(api)/api/simulate/+server.ts:placementToOrientation() — Tilt-State zu Engine-Orientation-Vector (Phase 2.1)