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

Vektor um einen bestimmten Winkel drehen

 

PeterPan4711
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2013, 21:01     Titel: Vektor um einen bestimmten Winkel drehen
  Antworten mit Zitat      
Hallo zusammen,

ich stehe vor einer kleinen Herausforderung, bei der mir der eine oder andere vielleicht helfen kann. Vielen Dank dafür schon mal im Voraus!

Es geht um folgendes:

Ich habe zwei in einem Punkt miteinander verbunden Strecken mit den folgenden Koordinaten:

Code:
% Koordinaten S1
a1x = 2;
a1y = 3;

b1x = 4;
b1y = 5;

% Koordinaten S2
a2x = 1;
a2y = 2;

b2x = 2;
b2y = 3;

% Plot S1 und S2
plot([a1x b1x], [a1y b1y],'r');
grid on;
hold on;
plot([a2x b2x], [a2y b2y],'b');
xlim([0 5]);
ylim([0 5]);
 

% Nun möchte ich die Strecke S2 um einen beliebigen Winkel alpha um den Verbindungspunkt der beiden Strecken P(2,3) drehen. Die Länge der Strecke soll dabei gleich bleiben. Irgendwie bekomme ich das Problem nicht gelöst. Weder der von mir vorgegebene Winkel passt, noch die Länge von S2 bleibt gleich. Dadurch, das S2 auch um einen Winkel gegenüber des globalen KO-Systems verdreht ist, muss man diesen Winkel ja auch berücksichtigen. Im Folgenden mal meine aktuelle Herangehensweise.


Code:
% Vektor S1 dessen Neigung zum globalen KO-System
Vec_1= [b1x-a1x; b1y-a1y];

virt_x_Achse = [3; 0];

Neigung_Vec1= dot(Vec_1, virt_x_Achse)/(norm(Vec_1)*(norm(virt_x_Achse)));

beta_Vec1 = acos(Neigung_Vec1)*180/pi;

% Vektor S2
Vec_2 = [b2x-a2x; b2y-a2y];

% Winkel zwischen Vec1 und Vec2

alpha = 45;

R = [cos(alpha*pi/180) -sin(alpha*pi/180); sin(alpha*pi/180) cos(alpha*pi/180)];
 
Vec_2_rot = R*Vec_2;

a2x_neu = Vec_2_rot(1);
a2y_neu = Vec_2_rot(2);

Vec_2_neu = [a2x_neu-b2x; a2y_neu-b2y];

plot([a2x_neu b2x], [a2y_neu b2y],'b');


[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 23.11.2013, 00:32     Titel:
  Antworten mit Zitat      
Hallo,

Vorweg: Nutz in Zukunft bitte die Code-Umgebung.

Code:
% Koordinaten S1
a1x = 2;
a1y = 3;

b1x = 4;
b1y = 5;

% Koordinaten S2
a2x = 1;
a2y = 2;

b2x = 2;
b2y = 3;

% Plot S1 und S2
plot([a1x b1x], [a1y b1y],'r');
grid on;
hold on;
plot([a2x b2x], [a2y b2y],'b');
xlim([0 10]);
ylim([0 10]);

% --------------------------------------

Vec_1       = [b1x-a1x; b1y-a1y];
phi_alt_rad = atan( Vec_1(2) / Vec_1(1) );  % tan = Gegenkathete / Ankathete

alpha       = -45;
alpha_rad   = alpha * pi / 180;

rho         = norm(Vec_1);                  % Betrag (=Länge) des Vektors
phi_rad     = phi_alt_rad + alpha_rad;      % Neuer Winkel

x = rho * cos(phi_rad);     % vgl. Zylinderkoordinaten (mit z = 0)
y = rho * sin(phi_rad);

b1x_neu = a1x + x;
b1y_neu = a1y + y;

plot([a1x b1x_neu], [a1y b1y_neu],'g');


Bei Fragen, fragen =)

Beste Grüße,
Seban

Edit: Glaub, ich hab die falsche Gerade gedreht. Der Lösungsweg sollte aber auch so ersichtlich sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
PeterPan4711
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 22.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2013, 12:28     Titel:
  Antworten mit Zitat      
Hallo Seban,

vielen Dank, funktioniert prima Smile

Beste Grüße und einen guten Start in die Woche!
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.