Verfasst am: 04.03.2009, 17:03
Titel: Programmierung eines Kreissegments
Hallo miteinander,
ich habe noch nicht viel Erfahrung mit Matlab gesammelt und wuerde mich dahrer freuen wenn ihr mir weiterhelfen koenntet. Ich moechte mit Matlab ein Kreissegment programmieren, wobei lediglich der Mittelpunkt (X1,Y1) fest vorgegeben ist. Der radius sowie der die ober und unter grenze des Kreissegments soll Variabel gehalten werden. Die geometrischen Daten des Kreissegments moechte ich in ein csv datei speichern. Wie gehe ich da am besten vor?
Danke!
Was genau verstehst du unter Kreissegment "programmieren"? Willst du eine 2D-Koordinatenliste von Punkten gleichen Abstands erzeugen, die auf diesem Segment liegen?
Ja genau. Aktuell bin ich gerade damit beschaeftigt eine Schleife zu schreiben, die mir die einzelnen Punkte auf diesem Kreissegment berechnet. Probleme bereitet mir auch noch die unterschiedlichen Grenzen des Segments.
Mein Problem besteht eigentlich darin, das ich einen Programm schreiben moechte, welches die Koordinaten auf einem Kreis bestimmt. Dabei sollen Koordinaten der Punkte, die auf diesem Kreissegment liegen in eine csv datei geschrieben werden.
Na ja ist noch etwas unausgegoren und wahrscheinlich etwas umstaendlich geschrieben.
Code:
%Center
X1 = -204.00;
Y1 = 67.694116;
r = 5 ;
alpha = 45;
beta = 60;
% datum line
XD = X1 - r
% Lower Limit
XLL = X1 - r*cos(2*pi*alpha/360);
YLL = Y1 - r*sin(2*pi*alpha/360);
% Upper Limit
XUL = X1 - r*cos(2*pi*beta/360);
YLL = Y1 + r*sin(2*pi*beta/360);
a = alpha
for a = a:-0.1:0
X = X1 - r*cos(2*pi*a/360
r=1; %Radius
a=10; % Winkel Start
b=100; % Winkel Ende
x_m=1; % Mittelpunkt
y_m=-2;
n=10; % Anzahl der Punkte
phi1=linspace(deg2rad(a),deg2rad(b),n);
phi2=linspace(0,2*pi,360);
x1=x_m+r*cos(phi1); % x Koordinaten
y1=y_m+r*sin(phi1); % y Koordinaten der Punkte des Segments
x2=x_m+r*cos(phi2);
y2=y_m+r*sin(phi2);
plot(x_m,y_m,'ro');
hold on;
plot(x2,y2,':');
plot(x1,y1,'x-r','LineWidth',2,'MarkerSize',8);
axis equal;
grid on;
Mensch danke fuer die hilfe!
Ich werde das heute abend nochmal ausprobieren. Alpha ist in dem Fall ein "negativer" Winkel. Aber das laesst sich ja dann ueber die Winkelfunktionen korrigieren.
Hallo,
habe gerade versucht, dass programm fertig zu schreiben. Ich habe allerdings ein Problem mit dem abspeichern der Daten. Kann mir jemand helfen? Finde den Fehler nicht.
Code:
%part of creating control points in these 6 curves
X1 = -204.00;
Y1 = 67.694116;
r = 5 ;
alpha = -45;
beta = 60;
% datum line
XD = X1 - r;
% Lower Limit
XLL = X1 - r*cos(2*pi*alpha/360);
YLL = Y1 + r*sin(2*pi*alpha/360);
% Upper Limit
XUL = X1 - r*cos(2*pi*beta/360);
YUL = Y1 + r*sin(2*pi*beta/360);
a = alpha;
d = 2*(beta - alpha);
X = [];
Y = [];
for a = alpha:0.5:beta
X = X1 - r*cos(2*pi*a/360);
Y = Y1 + r*sin(2*pi*a/360);
Z = 0;
out = strcat('LEcircle_1.csv');
fid = fopen(out,'wt');
for j = 1:d
fprintf(fid,'%f %f\n', X(j), Y(j)) end fclose(fid);
end
X1 = -204.00;
Y1 = 67.694116;
r = 5 ;
alpha = -45;
beta = 60;
% datum line
XD = X1 - r;
% Lower Limit
XLL = X1 - r*cos(2*pi*alpha/360);
YLL = Y1 + r*sin(2*pi*alpha/360);
% Upper Limit
XUL = X1 - r*cos(2*pi*beta/360);
YUL = Y1 + r*sin(2*pi*beta/360);
a = alpha;
d = 2*(beta - alpha);
X = [];
Y = [];
a=alpha:0.5:beta
X = X1 - r*cos(2*pi*a/360);
Y = Y1 + r*sin(2*pi*a/360);
Z = 0;
out = strcat('LEcircle_1.csv');
fid = fopen(out,'wt');
for j = 1:d
fprintf(fid,'%f %f\n', X(j), Y(j)) end fclose(fid);
Jupp funzt, vielen Dank!!
Aber warum eigentlich? was war an der aeusseren for schleife falsch?
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 05.03.2009, 08:08
Titel:
Du hast in jedem Durchlauf der äußeren Schleife die Datei geöffnet, überschrieben und geschlossen. Daher war am Ende nur eine Zeile in der Datei.
Die verbleibende for-Schleife kannst du auch verweiden, sieh dir mal
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.