| Pfad: Wellenfeld-Synthese/Theorie/Kirchhoff-Helmholtz Integral |
Kirchhoff-Helmholtz Integralmathematische Definition zur Berechnung von Schallwellen Die Grafik veranschauligt die im Kirchhoff-Helmholz Integral verwendeten Parameter. "Gegeben ist hier eine Oberfläche S in einem quellenfreien homogenen Medium mit einem bestimmten Volumen V. Darin enthalten ist der Punkt A (Empfängerpunkt), bestimmt durch den Vektor r, an welchem das Schallfeld der primären Quellen rekonstruiert werden soll. Des weiteren gibt es einen nach innen zeigenden Normalenvektor n auf die Oberfläche S, der mit r den Winkel φ einschließt. Das Kirchhoff-Helmholtz Integral für homogene Medien ist gegeben durch:" (Stefan Kerber 2003) Die Gleichung besteht aus zwei Teilen, wobei der erste Teil den Schalldruck und der zweite Teil die Schallschnelle in Richtung des Normalvektors n repräsentiert.
Bei der Rekonstruktion kann man sich auf eine vereinfachte Berechung mittels der Rayleigh Integrale beschränken. Dabei wird als Oberfläche S1 eine unendlich große Ebene im karthesischen Koordinatensystem bei z = 0 angenommen. Die Primärquellen liegen dann in der Ebene z < 0 und alle Empfängerpositionen A in der Ebene z > 0. Dies ist in der Grafik auf der Hauptseite. dargestellt. Das zu rekonstruierende Wellenfeld ergibt dann nur noch entwender aus der Schnelle senkrecht zur, oder aus dem Schalldruck an der Ebene z = 0.
Die obigen Formeln gehen von einem unendlich langen Array aus, dass eine kontinuierliche Verteilung der Sekundärquellen aufweist. Bei einer endlichen, diskreten Verteilung können die Integrale durch Summen ersetzt werden. Dabei kommt es jedoch zu Fehlern, ähnlich den Abtastfehlern im Zeitbereich.
In der tatsächlichen Programierung werden die Abstände der Boxen und der Schallquellen in Bezug zu einem Referenzpunkt betrachtet. Der folgende Pseudo-Quelltextausschnitt beschreibt die Berechnung des Drucks und der Latenz für Kugelschallquellen hinter dem Array für eine nachfolgende Faltung (meist FIR-Filterung) mit dem eigentlichen Signal. Anwendung auf Boxenarray
Pseudocode in Anlehnung an das Programm Wonder2:
für jedes i in Quellen:
für jedes j in Boxen:
Vektor_Box = Position(j) # gibt Position zum Referenzpunk
Vektor_Quelle = Position(i) # (0,0)
Abstand_Quelle_Box = Betrag(Vektor_Quelle - Vektor_Box)
# Differnzabstand Quelle Box
cos_phi = Winkel(Vektor_Box, Vektor_Quelle)
# gibt den Richtungswinkel der Box zur
# Quelle (Fehler in der obigen Darstellung)
Druck = (1 / Wurzel(Abstand_Quelle_Box) )* cos_phi
# Druckwert für die Box
Latenz = Abstand_Quelle_Box * (1 / 340)
# zeitlicher Abstand Quelle Box
Der Rückgabewert ergibt sich damit aus den Werten für Druck und Latenz |
Suche
Kategorien
|