WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kreis plotten in Ebene mit gegebenem Mittelpunkt und Radius

 

Joa
Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 22.10.2009, 15:39     Titel: Kreis plotten in Ebene mit gegebenem Mittelpunkt und Radius
  Antworten mit Zitat      
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?

Mit diesem m file:
http://www.mathworks.com/matlabcentral/fileexchange/8664
habe ich es schon probiert, ich komme aber nicht auf den zweiten Spannvektor der Ebene.

Gibt es noch eine weitere Lösung?

Vielen Dank schonmal.
LG Joa
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.10.2009, 17:13     Titel:
  Antworten mit Zitat      
Hallo,

bestimme doch einen zweiten Spannvektor, z.B. als Kreuzprodukt aus erstem Spannvektor und Normalenvektor.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Joa
Themenstarter

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.11.2009, 16:21     Titel:
  Antworten mit Zitat      
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!

Danke schon mal.
LG
Joa
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 05.11.2009, 16:31     Titel:
  Antworten mit Zitat      
Hallo Joa,

gib doch mal einen kleinen lauffähigen Beispielcode an, bei dem das Problem auftritt. Dann können wir uns das "Verkippen" besser vorstellen.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Joa
Themenstarter

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.11.2009, 16:39     Titel:
  Antworten mit Zitat      
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.

2.PNG
 Beschreibung:
Hier das zweite Bild

Download
 Dateiname:  2.PNG
 Dateigröße:  10.33 KB
 Heruntergeladen:  950 mal
1.PNG
 Beschreibung:
Hier das erste Bild

Download
 Dateiname:  1.PNG
 Dateigröße:  49.49 KB
 Heruntergeladen:  951 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 05.11.2009, 16:45     Titel:
  Antworten mit Zitat      
Hallo Joa,

jetzt kann ich es mir vorstellen. Darf ich trotzdem noch um einen Beipielcode bitten? Denn sonst kann ich nicht sagen, wie der Kreis zustandekommt.

Herzliche Grüße
Bijick

Edit wegen typo
_________________

>> why

Zuletzt bearbeitet von Bijick am 06.11.2009, 14:48, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Joa
Themenstarter

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 05.11.2009, 16:51     Titel:
  Antworten mit Zitat      
hey Bijick,
der Code mit dem der Kreis angezeigt wird ist dieser:
http://www.mathworks.com/matlabcentral/fileexchange/8664

Da ich mir anhand der Bilder auch ziemlich sicher bin, dass die Spannvektoren richtig sind, weiß ich nicht woran es sonst noch liegen kann!

Wäre super, wenn du eine Lösungsidee für mein Problem hast.
LG
Joa
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 06.11.2009, 14:46     Titel:
  Antworten mit Zitat      
Hallo Joa,

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"

Code:
clear variables
close all
% Beispieldaten
r=2; M=[1;-1;2]; n=[1;2;3]; v1=[3;0;-1]; v2=[0;3;-2];
% Vektoren normieren
n=n/norm(n);
v1=v1/norm(v1);
v2=v2/norm(v2);

% 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.5 0]);


Ich bin gespannt, ob es auch mit Deinen Daten klappt.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Joa
Themenstarter

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 09.11.2009, 11:36     Titel:
  Antworten mit Zitat      
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?

LG Joa
Private Nachricht senden Benutzer-Profile anzeigen
 
Joa
Themenstarter

Forum-Century

Forum-Century


Beiträge: 133
Anmeldedatum: 19.05.09
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 09.11.2009, 12:39     Titel:
  Antworten mit Zitat      
Hey,
nachdem ich jetzt nochmal ein bischen an den Spannvektoren rumgebastelt habe funktioniert es endlich!

Vielen Dank Bijick!

LG
Joa
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 09.11.2009, 12:44     Titel:
  Antworten mit Zitat      
Hallo Joa,

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

Code:
n=[1;2;3];
v1 = [1;0;0];v2 = [0;1;0];

v1 = v1 - (v1'*n)/(n'*n) * n;
v2 = v2 - (v2'*n)/(n'*n) * n - (v2'*v1)/(v1'*v1) * v1;

% Test:
n'*v1
n'*v2
v1'*v2


Hab gerade gesehen, dass es schon geklappt hat, aber vielleicht hilft es ja noch mal jemandem.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.