Verfasst am: 22.10.2009, 15:39
Titel: Kreis plotten in Ebene mit gegebenem Mittelpunkt und Radius
Hallo,
ich habe ein Problem und brauche dringend Hilfe.
Ich habe mir Mittelpunkte und Radien von Kreisen in 3D berechnet und möchte diese Kreise anzeigen lassen.
Das Problem ist jetzt folgendes:
Die Kreise sollen alle in einer Ebene liegen. Von dieser Ebene habe ich den Normalenvektor.
Ich habe die Koordinaten vom Mittelpunkt und kann mir einen Richtungsvektor bestimmen der senkrecht auf dem Normalenvektor der Ebene steht. Hierzu nehme einfach den Mittelpunkt des Kreises und irgendeinen Punkt aus der Ebene.
Wie kann ich jetzt NUR mittels diesen Gegebenheiten einen Kreos zeichnen der in der Ebene liegt und den berechneten Mittelpunkt und Radius hat?
Hey,
ich habe nochmal eine Frage bzw ein Problem.
Ich habe mir jetzt die zwei Spannvektoren der Ebene berechnet und weiß jetzt mit Sicherheit, dass die zwei Spannvektoren richtig sind!
Jetzt habe ich aber bei Flächen die nicht parallel zur x-y-Ebene sind das Problem, dass meine gezeichneten Kreise verkippen.
Bei Flächen die in der x-y-Ebene liegen funktioniert es aber wunderbar.
Wie kann ich das Problem lösen?
Wäre super wenn mir jemand helfen kann, ich bin schon langsam am verzweifeln!
Ich hab zwei Beispiel Bilder anhand derer es wahrscheinlich am besten klar wird.
Die rote Linie ist der Normalenvektor meiner Ebene.
Die weiße und die gelbe Linie sind die Spannvektren der Ebene.
Und der pinke kreis ist mein gezeichneter Kreis, der ja definitiv nicht in der Ebene liegt die die zwei Spannvektoren aufspannen.
ich würde es so machen:
1. den Kreis mit Radius r um den Nullpunkt in der x-y-Ebene bestimmen
2. den Kreis in die richtige Ebene mit Normalenvektor n "kippen" durch Rotation, dazu brauchen wir Spannvektoren v1 und v2.
3. den gekippten Kreis an den Mittelpunkt M "hängen"
% Test für die Spannvektoren (Ergebnis muss Null sein!)
n'*v1
n'*v2
% Der Kreis um den Nullpunkt ist
t = linspace(0,2*pi,100);
P = r*[cos(t);sin(t);zeros(1,100)];
plot3(P(1,:),P(2,:),P(3,:),'b');
hold on
axis equal
% Das neue Koordinatensystem ist quiver3(0,0,0,v1(1),v1(2),v1(3),'r') quiver3(0,0,0,v2(1),v2(2),v2(3),'r') quiver3(0,0,0,n(1),n(2),n(3),'b')
% Die Rotationsmatrix bringt die z-Achse auf den Normalenvektor n der % Ebene, die x- und y-Achse je auf einen Spannvektor v1 bzw. v2, falls % diese senkrecht aufeinander stehen.
R = [v1,v2,n];
P = R*P;
plot3(P(1,:),P(2,:),P(3,:),'r');
% Das Anhängen ist dann eine einfache Verschiebung
P = M*ones(1,100)+P;
plot3(P(1,:),P(2,:),P(3,:),'k');
figure(1)
% sieht falsch aus? Mal kurz warten! pause(5) view([63.50]);
Hey,
danke für die Hilfe.
Es klappt leider imme rnoch nicht richtig.
Aber ich denke es liegt doch an meinen Spannvektoren, da sie nicht genau senkrecht sind und auch nicht genau senkrecht zum Normalenvektor.
Ich versuche das Problem gerade zu beheben tue, mich aber schwer.
Hast du eine Ahnung wie ich das machen kann mit Hilfe des Normalenvektors den ersten Spannvektor zu finden, der auch in der Ebene liegt?
Ich habe ja die Ebenengleichung und den Spannvektor, und zur Berechnung des ersten Spannvektors müsste es ja reichen irgendeinen Punkt auf der Ebene zu nehmen, aber anscheinend geht es doch nicht so einfach.
Hat irgendwer eine Idee wie man das macht?
zur Berechnung der Spannvektoren kannst Du das Gram-Schmidtsche Orthogonalisierungsverfahren nehmen. Als Anfangsvektoren nimmst Du einfach n und zwei Einheitsvektoren, die linear unabhängig von n sind. Zum Beispiel
Hab gerade gesehen, dass es schon geklappt hat, aber vielleicht hilft es ja noch mal jemandem.
Herzliche Grüße
Bijick
_________________
>> why
Einstellungen und Berechtigungen
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.