Verfasst am: 28.01.2014, 14:58
Titel: Röhre um Schraubenlinie legen
Hallo zusammen,
ich habe riesen Probleme bei einer Aufgabe. Generell habe ich verstanden was ich brauche und wie es aussehen müsste, aber ich scheitere auf Grund meiner geringen MatLab-kenntnisse einfach an der Umsetzung.
Ich soll um eine Schraubenkurve eine Röhre legen. Die Gestamtsteigung der Schraubenkurve ist 0,6 und sie geht einmal rum, also 2*Pi. Die Steigung der Kurve ist 0,2.
Soweit so gut, ich habe die Oberfläche der Röhre um die Kurve mit Radis 0,1 gegeben mit:
r(t,sigma): Ortvektor der Fläche
k(t): Ortsvektor der Raumkurve
B(t): Binormalenvektor von k(t)
N(t): Normalenvektor von k(t)
Die Kurve in Matlab darzustellen ist nicht das Problem. Ich hab es wie in einem anderen alten Beitrag hier im Forum auch geschafft viele Kreise um die Kurve zu Plotten. Das scheint mir aber nicht der richtige Weg zu sein.
Muss ich nicht irgendwie ein Meshgrid erzeugen und dann surf nutzen um die Oberfläche darzustellen? Ich hoffe ihr könnt mir weiter helfen. Hier mal was ich bislang habe und was auch auf jeden Fall brauchbar ist.
Ob mein Binormalenvektor und der Normalenvektor richtig ist weiß ich nicht. Deshalb lass ich sie mal raus. Über eine Art kochrezept für mein Problem wäre ich auch sehr erfreut.
Entsprechend dazu nochmal der Code aus dem älteren Forenbeitrag, welcher nur die Kreise zeichnet. Bei surf scheint irgendwas nicht zu stimmen und das Programm steigt aus.
t = [0:0.01:1]; % die 3 wegen 3*h. h für das Dreibein in reinform benötigt
x=a*cos(2*pi*t); % Beschreibt die Kurvenfunktion in Parameterform
y=a*sin(2*pi*t);
z=3*h*t;
plot3(x,y,z)% Zeichnet die obere Kurve in den entsprechenden Koordinaten grid on
hold on
while(t1<=1)
k = [a*cos(2*pi*t1);a*sin(2*pi*t1);3*h*t1]; % Funtion die die Raumkurven beschreibt
b = [-6*pi*a*sin(2*pi*t1);6*pi*a*cos(2*pi*t1);3*h]; % 1. Ableitung nach t
c = [-36*pi*a*cos(2*pi*t1);-36*pi*a*sin(2*pi*t1);0]; % 2. Ableitung nach t
b_betrag = sqrt(dot(b,b)); % Betrag des Vektors a'
T = b/b_betrag; % Tangenteneinheitsvektor
B1 = cross(b,c); % Kreuzprodukt der Vektoren (b und c)
B1_betrag = sqrt(dot(B1,B1));
B = B1/B1_betrag; % Binormaleneinheitsvektor
N = cross(B,T);
t1=t1 + 0.01;
M = repmat(k, 1, n);
R = roh*(B * sin(phi) - N * cos(phi)) + M;
plot3(R(1,:),R(2,:),R(3,:)) end
t3 = [0:0.01:1];
phi2 = [0:(2*pi)/100:2*pi];
R = sqrt(a^2 + h^2);
r = [a*cos(2*pi*t3);a*sin(2*pi*t3);h*t3];;
B2 = (1/R)*[h*sin(2*pi*t3);-h*cos(2*pi*t3);h*t3];
N2 = (1/R)*[-cos(2*pi*t3);-sin(2*pi*t3);0*t3];
sin2 = sin(phi2)
cos2 = cos(phi2)
j2 = 1
t = [0:0.01:1]; % die 3 wegen 3*h. h für das Dreibein in reinform benötigt
x=a*cos(2*pi*t); % Beschreibt die Kurvenfunktion in Parameterform
y=a*sin(2*pi*t);
z=3*h*t;
sigma = [0:pi/10:2*pi];
[m,n] = size(sigma);
M = zeros(3, n);
plot3(x,y,z)% Zeichnet die obere Kurve in den entsprechenden Koordinaten grid on
hold on
while(t1<=1)
k = [a*cos(2*pi*t1);a*sin(2*pi*t1);3*h*t1]; % Funtion die die Raumkurven beschreibt
b = [-6*pi*a*sin(2*pi*t1);6*pi*a*cos(2*pi*t1);3*h]; % 1. Ableitung nach t
c = [-36*pi*a*cos(2*pi*t1);-36*pi*a*sin(2*pi*t1);0]; % 2. Ableitung nach t
b_betrag = sqrt(dot(b,b)); % Betrag des Vektors a'
T = b/b_betrag; % Tangenteneinheitsvektor
B1 = cross(b,c); % Kreuzprodukt der Vektoren (b und c)
B1_betrag = sqrt(dot(B1,B1));
B = B1/B1_betrag; % Binormaleneinheitsvektor
N = cross(B,T);
t1=t1 + 0.01;
k = repmat(k, 1, n);
R = roh*(B * sin(sigma) - N * cos(sigma)) + k;
plot3(R(1,:),R(2,:),R(3,:)) end
Hallo,
hast du dein Problem mittlerweile lösen können?
Habe eine ähnliche Problemstellung....
LG
Student11235
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 23.01.2019, 18:13
Titel:
Hallo Sportsfreunde,
wir gehören ebenfalls zu dem erlesenen Kreise jener Studenten mit der hier gesuchten Problemstellung... es hat uns Zeit und Nerven gekostet. Dennoch haben wir uns geschworen: Wenn wir es schaffen, wollen wir einen Beitrag leisten und hier mit euch teilen...
%Variablendeklaration
syms k; %Ortsvektor Raumkurve k(t) -> Schraubenkurve (Helix) syms r; %Ortsvektor Fläche r(t, theta) -> Röhre um Schraubenkurve
syms B; %Binormalenvektor von k(t) syms N; %Normalenvektor von k(t) syms Tv; %Tangentenvektor von k(t)
syms a; %Radius der Schraubenkruve
syms g; %Ganghöhe der Schraubenkurve
syms h; %Steigung der Schraubenkurve
syms rho; %Radius der Röhre
syms t; %Winkel der Raumkurve (2*pi = eine durchlaufene Windung) syms theta; %Winkel der Röhre (2*pi = geschlossene Röhre)
%Ortsvektor Schraubenkurve k(t)
k =[a*cos(t);a*sin(t);h*t];
k1=[diff(k(1),t);diff(k(2),t);diff(k(3),t)];
k2=[diff(k1(1),t);diff(k1(2),t);diff(k1(3),t)];
%Tangentenvektor Tv, Normalenvektor N, Binormalenvektor B von k(t)
Tv= simplify(k1);
N = simplify(k2);
B = simplify(cross(Tv,N));
%Ortsvektor Fläche (Röhre) r(t, theta)
r = simplify(rho.*(B.*sin(theta)-N.*cos(theta))+k);
%Variablendeklaration
a = 1; %Radius der Schraubenkruve
g = a/3; %Ganghöhe der Schraubenkurve
h = g/(2*pi*a); %Steigung der Schraubenkurve
rho = a/10; %Radius der Röhre
t = linspace(0,3*2*pi,360); %Winkel der Raumkurve
%Anzahl der durchlaufenen Windungen = 3
%um die Gesamtsteigung 3h zu erreichen
theta = linspace(0,2*pi,36);%Winkel der Röhre
%Parameterdarstellung des Ortsvektors der Schraubenkurve k(t)
kx = a*cos(t);
ky = a*sin(t);
kz = h*t;
%Plotten der Schraubenkurve
plot3(kx, ky, kz, 'r','linewidth', 3);
axis equal
grid on
hold on
xlabel('x-Achse'); ylabel('y-Achse'); zlabel('z-Achse'); title('Schraubenkurve (Helix)');
%Gitterpunkte aus Definitionsbereich t und theta erstellen
[T,Theta]=meshgrid(t, theta);
%Parameterdarstellung des Ortsvektors der Röhre r(t,theta)
rx = rho.*(h.*a.*sin(T).*sin(Theta)+a.*cos(T).*cos(Theta))+a.*cos(T);
ry = rho.*(-h.*a.*cos(T).*sin(Theta)+a.*sin(T).*cos(Theta))+a.*sin(T);
rz = rho.*(a.^2*sin(Theta))+h.*T;
%Plotten der Fläche (Röhre) surf(rx,ry,rz);
axis equal
grid on
hold on
xlabel('x-Achse'); ylabel('y-Achse'); zlabel('z-Achse'); title('Rutsche');
c = colorbar;
c.Label.String = 'z-Wert (Höhenangabe)';
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
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.