Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

MATLAB, Simulink, Stateflow: Grundlagen, Toolboxen, Beispiel

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kreisabschnitt plotten mit Mittelpunkt, Winkel, Anfangspunkt

 

Malu
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.04.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2021, 10:22     Titel: Kreisabschnitt plotten mit Mittelpunkt, Winkel, Anfangspunkt
  Antworten mit Zitat      
Hallo zusammen,

ich möchte ein Kreisabschnitt plotten, der einen gegebenen Anfangspunkt sowie einen gegebenen Mittelpunkt besitzt und einen bestimmten Winkel aufspannt.

Man kann sich das ganze wie eine Biegestruktur vorstellen: der untere Abschnitt l1 wird um einen Winkel a1 aus dem Ursprung heraus gebogene(siehe Plot & Skizze). Nun soll mein Kreisabschnitt an den obersten Punkt des unteren Abschnitt angefügt werden.
Der Startpunkt ist AP und der Mittelpunkt des Kreisabschnitts ist M2. Der Winkel der aufgespannt werden soll ist a2.
Zur Verdeutlichung unten mein bisheriger Code (hab bisher noch nicht viel Matlab Erfahrung) und eine Skizze wie das Ganze am Ende aussehen soll (blaue Kurve).

Ich hoffe ihr könnt mir weiterhelfen!

Code:

% Variablen für die Länge
l = 100;
l1 = 2/3*l;
l2 = 1/3*l;

% Biegewinkel
a1 = 60;
a2 = 90;

% Radien r1 und r2 berechnen
r1 = (l1*180)/(pi*a1);
r2 = (l2*180)/(pi*a2);

% Erster Kreisabschnitt
% Kreismittelpunkt vom ersten Kreisabschnitt
xm1 = r1;
ym1 = 0;
M1 = [xm1,ym1];

% Kreismittelpunkt vom zweiten Kreisabschnitt
xm2 = r1-(r1+r2)*cos(a1);
ym2 = (r1+r2)*sin(a1);
M2 = [xm2,ym2];

% 1. Winkel im Bogenmaß  
a1b = deg2rad(a1);
% 2. Winkel im Bogenmaß  
a2b = deg2rad(a2);

% Schritte definieren
t1 = linspace(0,a1b);

% Werte für l1x und l1y die geplottet werden
l1x = -r1*cos(t1)+xm1;
l1y = r1*sin(t1)+ym1;

% Werte für l2x und l2y bestimmen mit Hilfe Anfangspunkt AP, Kreismittelpunkt M2 und Winkel a2
% Anfangspunkt vom zweiten Kreisabschnitt
AP = [(r1-r1*cos(a1)),r1*sin(a1)];

% hier fehlt mir der Code für l2x und l2y.
% ...

% Graph zeichnen
figure
plot(l1x,l1y);
hold on

%plot(l2x,l2y);  % beides in einen Graphen plotten

% Achsen limitieren und beschriften
xlim([0,100]);
ylim([0,100]);
 
xlabel('X - Werte');
ylabel('Y - Werte');

set(gca,'xtick',([min(xlim):10:max(xlim)]));
set(gca,'ytick',([min(ylim):10:max(ylim)]));
 


Biegestruktur_100mm_30grad_Beispiele.jpg
 Beschreibung:

Download
 Dateiname:  Biegestruktur_100mm_30grad_Beispiele.jpg
 Dateigröße:  142.18 KB
 Heruntergeladen:  17 mal
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 695
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.04.2021, 13:10     Titel:
  Antworten mit Zitat      
Was genau ist deine Frage?

Wie du den zweiten Teil-kreis an den ersten bekommst?

Das geht doch nach Methode des genauen hinsehens:

Du hast zwei (Teil-)Kreise.
Diese berühren sich in einem Punkt. Dieser Punkt ist der letzte Wert des Kreisbogens des ersten Kreises.
=> dies setzt du dann in die Berechnung des Mittelpunktes für Kreis zwei ein.

Code:
xm2 = xEnde_Kreis1 + r2*cos(a2b);
ym2 = yEnde_Kreis1 - r2*sin(a2b);


Außerdem musst du noch einen anderen Quadranten für Kreis zwei wählen. D.h. ein Minus beim r2.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Malu
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.04.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2021, 21:10     Titel:
  Antworten mit Zitat      
Hallo Martina,

vielen Dank für deine schnelle Antwort!

Meine Frage ist, wie genau ich den zweiten Kreissauschnitt plotte.
Also gibt es hierfür evtl. eine Funktion?
Den Mittelpunkt M2 habe ich ja bereits.
Also ist der Mittelpunkt M2, der Anfangspunkt AP, der Winkel a2 und der Radius r2 gegeben.

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 695
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 20.04.2021, 06:21     Titel:
  Antworten mit Zitat      
Den zweiten plotest du genau so, wie den ersten.
Per "hold on" im selben Figure.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Malu
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.04.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2021, 11:44     Titel:
  Antworten mit Zitat      
Vielen Dank Martina!

Ich musste deinen Vorschlag etwas anpassen, damit es funktioniert hat aber jetzt passt es!

Code:

clear all;
% Variablen für die Länge
l = 100;
l1 = 2/3*l;
l2 = 1/3*l;

% Biegewinkel (veränderbar)
a1 = 60;
a2 = 90;

% Radien r1 und r2 berechnen
r1 = (l1*180)/(pi*a1);
r2 = (l2*180)/(pi*a2);

% 1. Winkel a1 im Bogenmaß  
a1b = deg2rad(a1);
% 2. Winkel a2 im Bogenmaß  
a2b = deg2rad(a2);

% Erster Kreisabschnitt
% Kreismittelpunkt vom ersten Kreisabschnitt
xm1 = r1;
ym1 = 0;
M1 = [xm1,ym1];

% Kreismittelpunkt vom zweiten Kreisabschnitt
xm2 = r1-(r1+r2)*cos(a1b);
ym2 = (r1+r2)*sin(a1b);
M2 = [xm2,ym2];

% Schritte definieren
t1 = linspace(0,a1b);

% Werte für l1x und l1y die geplottet werden
l1x = -r1*cos(t1)+xm1;
l1y = r1*sin(t1)+ym1;

% Werte für l2x und l2y bestimmen mit Hilfe Anfangspunkt und Winkel
% Anfangspunkt vom zweiten Kreisabschnitt
AP = [(r1-r1*cos(a1b)),r1*sin(a1b)];

% Schritte definieren
t2 = linspace(deg2rad(-30),deg2rad(-30+a2));

l2x = M2(1) + r2*cos(t2);
l2y = M2(2) - r2*sin(t2);

% Graph zeichnen
figure
plot(l1x,l1y,'b');
hold on
plot(l2x,l2y,'b');
% Achsen limitieren und beschriften
xlim([0,150]);
ylim([0,150]);
 
xlabel('X - Werte');
ylabel('Y - Werte');

axis square
set(gca,'xtick',([min(xlim):10:max(xlim)]));
set(gca,'ytick',([min(ylim):10:max(ylim)]));

 
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.