Problem mit der Winkelangabe < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Aufgabe | Die Aufgabenstellung lasse ich mal weg, da das Programm bis auf ne kleinigkeit Funktioniert.
function [ m, y0, r, phi ] = gerade( x1, y1, x2, y2 )
%Geradengleichung aus Koordinaten bestimmen
% [m,y0] berechnen aus den beiden kartesischen
% Koordinaten P1 (x1,y1) und P2 (x2,y2)
% Den Abstand r des Punktes P1 vom Koordinatenursprung
% und seinen Winkel phi zur x-Achse in Grad
%Autor: D.Proeve/J.Gaedecke
if nargin == 2 %wenn nur zwei Parameter eingegegeben werden wird y0=0
%ausgegegeben und der Radius wird mittels Pythagoras berechnet
y0 = 0;
r = sqrt [mm] (x1^2 [/mm] + [mm] y1^2); [/mm]
if x1 == 0 %wenn x1==0 wird auf dem Command Window der Formatstring
%"Steigung Unendlich" gezeigt und außerdem die Steigung m
%sowie WInkel Phi berechnet
disp ('Steigung unendlich!')
m = sign(y1) * inf;
phi = sign(y1) * pi/2 * 180/pi;
return
end
m = y1 / x1; %Ermittlung der Steigung via Steigungsdreieck
phi = sign(y1) * atan2(y1,x1) * 180/pi; %Berechnung durch Bogenmaß
elseif nargin == 4
if x1 == x2 %wenn x1 == x2 wird auf dem Command Window der Formatstring
%"Steigung Unendlich" gezeigt und sowohl die Steigung m
%berechnet als auch y0 ausgegeben
disp ('Steigung unendlich!')
m = sign(y2-y1) * inf;
y0 = [];
end
m = (y2-y1) / (x2-x1); %Ermittllung der Steigung mittels der
%Punktkoordianten
y0 = (x2*y1 - x1*y2) / (x2-x1); %y0 wird mittels umgestellter geraden
% Gleichung ermittelt
r = [];
phi = [];
else
disp ('Falsche Anzahl von Parametern!')
help gerade
end |
Schönen Guten Abend alle zusammen,
ich habe da ein Problem. Das Programm funktioniert bis auf eine kleinigkeit tadellos.
Bei der Winkelausgabe von der x-Achse aus gesehen gibt MATLAB die Winkel mal von rechts und mal von links aus.
Was müsste ich am Programm verändern um das Einheitlich hin zu bekommen?
Mit freundlichen Grüßen
J.DEan
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:02 Mi 03.04.2013 | Autor: | Lueger |
Moin,
verstehe nicht ganz was du möchtest.
Meinst du diese Stelle?
phi = sign(y1) * atan2(y1,x1) * 180/pi; %Berechnung durch Bogenmaß
Wenn du immer einen positiven Winkel möchtest musst du sowas wie
mod(atan2(-1,1)+2*pi,2*pi) * 180/pi
eingeben.
Wenn noch was ist melde dich noch mal ....
Grüße
Lueger
|
|
|
|
|
Aufgabe | sign(y1) * atan2(y1,x1) * 180/pi
Was bleibt den davon jetzt erhalten oder wie kombiniere ich die beiden Ausdrücke? |
Guten Abend,
wo setze ich den jetzt y1, x1 ein?
Mit freundlichen Grüßen
J.Dean
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:34 Mi 03.04.2013 | Autor: | Lueger |
Mir ist immer noch nicht ganz klar, ob du das überhaupt möchtest.
phi = mod(atan2(y1,x1)+2*pi,2*pi) * 180/pi ; %Berechnung durch Bogenmaß
Beispiel:
x = 1, y=1 -> Winkel 45 Grad
x = 1, y=-1 -> Winkel von atan2 -45 Grad durch die Umrechnung 315
Das liegt daran, dass der Winkel bei Matalb von -pi/2 bis pi/2 definiert ist (gib mal doc atan2 ein dann sieht du das schön mit einem Bildchen) und nicht von 0 bis pi.
War es das was du wolltest ?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:42 Mi 03.04.2013 | Autor: | JamesDean |
Ja genau das habe ich gemeint, vielen Dank für deine Hilfe. Deine Antwort war wirklich sehr hilfreich.
Thank you
Mit freundlichen GRuß
J.DEan
|
|
|
|