WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

gekrümmte Oberfläche

 

Quarz2200
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 10.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2013, 19:35     Titel: gekrümmte Oberfläche
  Antworten mit Zitat      
Hallo zusammen,

mein Aufgabe ist, einen Strahl auf eine gekrümmte Oberfläche/Linse treffen zu lassen und dann, je nach dem an welchem Punkt er auf die Linse trifft, unterschiedlich brechen zu lassen und den herauskommenden Strahl ebenfalls anzeigen zu lassen.

bisher habe ich nur geschafft den Eingangsstrahl zu programmieren.
Code:
clear all;
close all;

ds=0.001;     % Schrittweite der numerischen Berechnung
m=10/ds;      % Zahl der Stützstellen (-5 < x < +5)
for j=1:13      % Schleife für mehrere Strahlen  
    x(1)=-5;                   % Startposition des Strahls (x-Koordinate)
    y(1)=-1.2+0.2*(j-1);  % Startposition des Strahls (y-Koordinate)
    alpha=0.0;                % Start-Neigungswinkel des Strahls gegen x-Achse
for i=1:m      
    x(i+1)=x(i)+ds*cos(alpha);
    y(i+1)=y(i)+ds*sin(alpha);
end

hold on
plot(x,y)
end

Wenn ich nun an einer Gerade den Strahl brechen müsste wäre das noch in Ordnung. Aber wegen der gekrümmten Oberfläche schaffe ich es nicht.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.01.2013, 11:19     Titel: Re: gekrümmte Oberfläche
  Antworten mit Zitat      
Hallo Quarz2200,

Was ist nun genau Deine Frage?
Möchtest Du bestimmen, an welchem Punkt genau der Strahl auf die gekrümmte Oberfläche fällt?

mein Aufgabe ist, einen Strahl auf eine gekrümmte Oberfläche/Linse treffen zu lassen und dann, je nach dem an welchem Punkt er auf die Linse trifft, unterschiedlich brechen zu lassen und den herauskommenden Strahl ebenfalls anzeigen zu lassen.

Gruß, Jan

PS. Wie immer möchte ich darauf hinweisen, dass "clear all" unnötig brutal ist. Es gibt keinen Grund alle geladenen Funktionen aus dem Speicher zu entfernen. Trotzdem ist dieses brutale Aufräumen extrem weit verbreitet. Leider. Wir könnten bestimmt eine Tonne CO2 einsparen, wenn man nicht tausende von Matlab-Installationen dazu bringen würde, zeit- und enrgieraubend alle benötigten Funktionen wieder von der Festplatte einzulesen und zu parsen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Quarz2200
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 10.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2013, 13:29     Titel:
  Antworten mit Zitat      
Hallo Jan,

Im Grunde ist das, mit dem clear all, wie du es sagst richtig. Da ich allerdings ein Anfänger bin, lasse ich es drin, nicht dass ich eine Variable benutze, die ich mal irgendwann anders deklariert habe und mir dadurch ein falscher Wert ausgegeben wird.

Mein Problem ist, dass ich nicht weiß, wie ich erstens die gekrümmte Oberfläche quasi senkrecht zur x-Achse programmiere und wie ich dann den Schnittpunkt des Strahls und der Oberfläche bestimme.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 24.01.2013, 15:06     Titel:
  Antworten mit Zitat      
Hallo,

gibt es denn sowas wie eine Funktionsvorschrift für die Oberfläche, oder ist das Gebilde bekannt?

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.01.2013, 17:00     Titel:
  Antworten mit Zitat      
Hallo Quarz2200,

Wenn das gekrümmte Objeklt z.B. eine Kugel wäre, würdest Du die Koordinaten des Zentrums und den Raduis benötigen. Dann könntest Du mit einfachen elementaren trigonometrischen Funktionen bestimmen, wo der Strahl die Kugel-Oberfläche trifft. Oder aber Du könntest bei Deiner schrittweisen Simulation bei jedem Schritt testen, ob Du bereits innerhalb der Kugel bist.

Zitat:
Da ich allerdings ein Anfänger bin, lasse ich es drin, nicht dass ich eine Variable benutze, die ich mal irgendwann anders deklariert habe und mir dadurch ein falscher Wert ausgegeben wird.

Und genau dazu dient "clear all" nicht. Es werden zwar auch alle Variablen gelöscht, aber zu dem auch alle M-Files, Builtin-in Funktionen, MEX-Files, persistent Variablen, Voreinstellungen z.B. in IMREAD, die dann beim nächsten Aufruf wieder ausgeführt werden müssen, Java-Klassen, Matlab-OO-Klassen und auch noch die Breakpoints des Matlab-Debuggers. Und deshalb ist es ineffizient und verhindert auch noch die Fehlersuche! Gerade für einen Anfänger ist "clear all" also ein substantieller Nachteil und trotzdem verbreitet es sich durch die Anfänger-Kurse an Schulen und Unis wie ein Virus. Und wie im richtigen Leben zeigt es sich mal wieder, dass das, was 90% der Leute machen, nicht unbedingt hilfreich oder nützlich ist.

Wenn Du aus Sicherheitsgründen alle Variablen löschen möchtest, ist dies sinnvoll:
Code:
clear  % Das löscht bereits alle Variablen, aber sonst nichts
% Oder explizit, damit man dass beim Lesen des Codes sofort versteht:
clear variables

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.