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

Helixabschnitte drehen und verknüpfen

 

Tino97
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2017, 15:48     Titel: Helixabschnitte drehen und verknüpfen
  Antworten mit Zitat      
Hallo,

ich habe die Koordinatenpunkte für einen offenen Helix, d.h. Startpunkt und Endpunkt liegen nicht aufeinander. Diesen Helix möchte ich nun mehrfach (turns) um einen Winkel drehen, so dass der zweite Winkel am Ende des ersten wieder anknüpft, dritte am zweiten, vierte am dritten usw..

Ich habe mir dafür den unten aufgeführten Code geschrieben, wo die Koordinaten erst aus einer txt ausgelesen, über eine Rotationsmatrix gedreht und am Ende in zusammengeführt werden, um alles vollständig plotten zu können.

Der Winkel bzw. die Schrittweite, mit der die Drehung durchgeführt wird, soll(te) sich durch skip/turns ergeben.

Als ich das Programm durchlaufen lies, wurde jedoch ein Fehler sichtbar, der sich anscheinend beim Übergang von einem Helixende zum nächsten Helixanfang ergibt.

Wenn ich nur zwei Helixabschnitte ist die gerade Verbindung deutlich zu erkennen.

Bisher konnte ich die genaue Ursache nicht herausfinden aber ich vermute, dass es an Winkel= .. liegen könnte. (Oder ich habe bei der Transformation der Koordinaten einen Denkfehler gemacht.)

Weiß jemand vielleicht was ich übersehen habe?

Code:
%[filename, pathname] = uigetfile('*.txt', 'Pfaddatei aufrufen');
%Pfaddatei = fopen([pathname filename],'rt');
Pfaddatei = fopen('helix.txt');

HKoord = textscan(Pfaddatei, '%f %f %f %f', 'HeaderLines',1);   %Einlesen der Koordinaten ab Zeile 2
HSpalten = cell2mat(HKoord);
Pnt = HSpalten(:,1);
xp = HSpalten(:,2)';                               %x
yp = HSpalten(:,3)';                               %y
zp = HSpalten(:,4)';                                %z

%% Plotten des Pfads

turns=46;  % Anzahl Drehungen
skip=41  % Sprünge
P=[xp; yp; zp];                       % Matrix mit xyz-Koordinaten
l=length(xp);                         % Anzahl der Koord.Punkte
anzPunkte=length(xp)*turns                % Anzahl aller Punkte
%for w=1:turns;  % Vollständiger Durchlauf
for w=2;     % Textlauf, mit nur 2 Drehungen
    Winkel=skip/turns*2*pi*(w-1);
    % Rx = [1,0,0;0,cos(Winkel),-sin(Winkel);0,sin(Winkel),cos(Winkel)];   % Rotationsmatrix Rx
    % Ry = [cos(Winkel),0,sin(Winkel);0,1,0;-sin(Winkel),0,cos(Winkel)];   % Rotationsmatrix Ry
    Rz = [cos(Winkel),-sin(Winkel),0;sin(Winkel),cos(Winkel),0;0,0,1];    % Rotationsmatrix Rz
   
    for k=1:l;          % Koordinaten der gedrehten Helixabschnitte
        E=Rz*P(:,k);
        xi(k)=E(1);
        yi(k)=E(2);
        zi(k)=E(3);
    end
    % Koordinaten der Helixabschnitte zusammensetzen zu vollständigen Pfad
    Ci=1+anzPunkte/turns*(w-1):anzPunkte/turns*w;
    xx(Ci,1)=xi;
    yy(Ci,1)=yi;
    zz(Ci,1)=zi;
   
end

plot3(zz,xx,yy)                          % Plot
hold on
%plot3(zz(1),xx(1),yy(1),'*')             % Startpunkt anzeigen
hold on
plot3(zz(end),xx(end),yy(end),'+');      % Endpunkt anzeigen
axis equal
 

Gruß
Tino

probe.m
 Beschreibung:
Code

Download
 Dateiname:  probe.m
 Dateigröße:  1.63 KB
 Heruntergeladen:  275 mal
helix.txt
 Beschreibung:
Koordinaten

Download
 Dateiname:  helix.txt
 Dateigröße:  5.5 KB
 Heruntergeladen:  272 mal
Private Nachricht senden Benutzer-Profile anzeigen


Tino97
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2017, 19:48     Titel:
  Antworten mit Zitat      
Habe den Fehler gefunden. Shocked

Damit klappt es:

Code:
Winkel=-skip/turns*2*pi*(w-1);
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 - 2024 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.