AmY,
ich habe mir den Link, den Du angegeben hast, näher angesehen und finde die Erklärungen und Diskussionen dort ziemlich schwer verständlich. Die Codezeilen, die Du in Deinen Post einkopiert hast, beziehen sich auf eine Programmiersprache, die eine Vektor-Mathematik-Bibliothek zur Verfügung stellt, die ich nicht kenne.
Es geht aber auch auf Delphinisch! Ich hänge hier eine ".exe"-Datei und die entsprechende
unit an. Wenn das Programm bei Dir zum Laufen kommt, kannst Du den Einfallswinkel ändern und siehst dann, welchen Winkel der gebrochene Strahl annimmt. Die Brechungsindizes sind die für Luft und Wasser. Zu beachten ist Folgendes: In der Optik werden die Einfalls- und Ausfallswinkel immer zwischen den betreffenden Lichtstrahlen und dem "Einfallslot" gemessen. Das "Einfallslot" ist eine gedachte Linie, die genau da, wo der einfallende Lichtstahl auftrifft, senkrecht auf der brechenden Oberfläche steht. Wenn also der Lichtstrahl genau senkrecht auf die Oberfläche trifft, dann ist der Einfallswinkel 0°. Das ist ein bisschen ungewohnt. Im täglichen Leben misst man meistens, z.B. die Steigung einer Strasse, ausgehend von der Waagerechten.
In der
unit "lbgu200" findest Du ganz am Ende die "function gebrochenerStrahl". Die berechnet die Richtung des gebrochenen Lichtstrahls aus der Richtung des einfallenden. Alle anderen Teile der
unit beschäftigen sich mit der Programmsteuerung durch die Bedienungelemente.
Ich hoffe, die Vektorrechnerei schreckt Dich nicht ab. Die für zweidimensionale Vektoren notwendigen Hilfsmittel sind in der
Unit "vect2Lib200" zusammengestellt. Im Allgemeinen ist das Berechnen von Geraden, Schnittpunkten, Winkeln und dergleichen mit Vektoren viel einfacher zu bewerkstelligen als mit den üblichen Geradengleichungen vom Typ y = m*x + b. Z.B. ist eine senkrecht verlaufende Gerade mit Vektoren überhaupt keine Schwierigkeit, während man bei der üblichen Geradengleichung im einer unendlich grossen Steigung zu kämpfen hat.
Hilft Dir das Beispiel?
mare_crisium