Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Brechung einer Graden an Ebene(Glasscheibe) (https://www.delphipraxis.net/58455-brechung-einer-graden-ebene-glasscheibe.html)

AmY 7. Dez 2005 10:12


Brechung einer Graden an Ebene(Glasscheibe)
 
Ich wollte eine Glasscheibe mit Delphi simulieren, hab aber nur das hier als Ansatz
( http://www.buha.info/board/archive/i...p/t-45768.html )
gefunden.
Ich suche eine Formel um eine Graden an einer ebene zu brechen und als Lösung die Steigung der geraden, bzw. die neue Gradengleichung zu erhalten.
Eigendlich steckt die in dem Post (s.o) schon drin. Leider kann ich aber kein *was-weiß-ich*. Wer übersetzt mir das(s.o oder s.u.), bzw. löst mein Problem?

restart;
with(LinearAlgebra):
N:=Vector([0,1,0]):
S0:=Vector([-1,1,0]):
w:=Normalize(CrossProduct(N,S0), Euclidean):
a1:=Pi/4:
R:=N*cos(a1)+(1-cos(a1))*(w*Multiply(Transpose(w),N))+sin(a1)*Cros sProduct(w,N);

Danke schon mal!
lg amy

mare_crisium 9. Dez 2005 23:02

Re: Brechung einer Graden an Ebene(Glasscheibe)
 
Liste der Anhänge anzeigen (Anzahl: 3)
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

Garfield 10. Dez 2005 09:55

Re: Brechung einer Graden an Ebene(Glasscheibe)
 
Zitat:

Zitat von mare_crisium
... 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.

Maple ist eine Programmiersprache, welche speziell für mathematische Probleme entwickelt wurde: http://www.maplesoft.com/

Kannte ich bisher auch nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz