Verfasst am: 26.06.2022, 20:25
Titel: Einhüllende Kurve einer Kreisschar
Hallo,
ich habe ein großes Problem, bei der Konstruktion, bzw. dem plotten einer Zykloide, die einen Kreis als Zeichnungspunkt hat.
Mein Ausgang ist eine Zykloide mit Zeichnungspunkt.
Ich habe bereits versucht die Kurve "einfach" parallel zu verschieben, was allerdings nur für einige wenige verkürzte Zykloiden funktioniert.
Hat von euch irgendjemand eine Idee wie man die untere Einhüllende der blauen Kreisschar bekommt? (siehe Bild)
Bitte mit genauer Erklärung, ich bin neu und habe quasi keine Ahnung von Matlab
Das Berechnen der Schnittpunkte einer Geraden - die um den Mittelpunkt läuft - und den Kreisen - die die Kontur der Zykloide mit Zeichnungskreis bilden -.
Code:
% Zykloidenkontur mit Kreis als Zeichnungspunkt % Deklaration der Parameter für die Berechnung
phi=(0:.001:2*pi)'; % Minimaler Abstand 0.001, da sonst Ungenauigkeiten auftreten
% Berechnung der Zykloiden Koordinaten (Zeichnungspunkt)
lambda=e/(delta/2);
x_z=((delta/2)+(d/2))*cos(phi)-lambda*(delta/2)*cos((((delta/2)+(d/2)).*phi)./(delta/2)); % Berechnung der x-Koordinate der Zykloide
y_z=((delta/2)+(d/2))*sin(phi)-lambda*(delta/2)*sin((((delta/2)+(d/2)).*phi)./(delta/2)); % Berechnung der y-Koordinate der Zykloide
% Vektoren erstellen, ohne Einträge, um Laufzeit zu verbessern
mg=tan(phi(lv1)); % Berechnung der Geraden Steigung
p=-(2*(x_z(lv2))+2*(mg)*(y_z(lv2)))/(1+(mg)^2); % Schnittpunkte zwischen Gerade und Kreis finden
q=(x_z(lv2)^2+y_z(lv2)^2-(d_B/2)^2)/(1+(mg)^2); %
[x1,x2]=quadrEq(p,q); % an der Stelle muss man sich eine kleine Funktion die eine p/q Formel löst basteln
[min1,I1]=min(ve); % Minimalwerte finden und als Kurvenpunkte festlegen [min2,I2]=min(vz);
if min1<min2
k(lv1,1)=xe(I1,1);
k(lv1,2)=ye(I1,1);
else
k(lv1,1)=xz(I2,1);
k(lv1,2)=yz(I2,1);
end
% Zykloiden Vektor in x- und y-Koordinaten trennen
kx=k(:,1);
ky=k(:,2);
% Zykloidenkontur zeichnen
figure(1);
plot(kx,ky,'k'),hold on, grid, axis equal;
title('Zykloidenkontur mit Kreis als Zeichnungspunkt');
xlim([-(D/2)(D/2)]);
ylim([-(D/2)(D/2)]);
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.