Zunächst ein riesen lob an das Forum und seine Mitglieder, viele Beiträge haben mir schon sehr geholfen.
Nun zu meiner Frage. Gegeben sind zwei Punkte im 3-D Raum, durch die eine Gerade definiert ist und der Radius einer Kugeloberfläche, deren Mittelpunkt im Koordinatenursprung liegt. Ich will nun den/die Schnittpunkt(e) berechnen. Ich habe mit sphere eine Kugeloberfläche erstellt und mit den geg. Punkten eine Gerade. Jedoch kann ich mit meinem Matlab Skript keinen Schnittpunkt finden.
Die einzige Erklärung, die mir dazu einfiel war, dass die Gerade, die als Punktmenge definiert ist, gewisse Abstände zwische den Punkten hat und genau dazwischen die Kugeloberfläche liegt. Ich hab versucht durch Verringern des Abstandes diese Fehlerquelle zu umgehen, jedoch ohne erfolg.
Ich poste hier mal meinen Quellcode, wenn jemand ne Idee hat und mir helfen kann, wäre ich ihm sehr verbunden.
Code:
P1=[000];
P2=[123];
L=[060.0005];
l=(L(1):L(3):L(2));
x = P1(1) + l*(P2(1) - P1(1));
y = P1(2) + l*(P2(2) - P1(2));
z = P1(3) + l*(P2(3) - P1(3));
plot3(x,y,z);
for k=1:length(X1) for n=1:length(x) if x(n)==X1(k)&&y(n)==Y1(k)&&z(n)==Z1(k) % Die folgende Zeile ist der Versuch, das "Abstandsproblem" anderweitig zu lösen
%((x(n))<X1(k)<(x(n)+0.0005))&&(y(n)<Y1(k)<(y(n)+0.0005))&&(z(n)<Z1(k)<(z(n)+0.0005))
x_sp=x(n);
y_sp=y(n);
z_sp=z(n);
end end end
X,Y und Z sind nach run bei mir nxn-Matritzen...
length gibt dir aber nur die Länge der grössten Dimension wieder.
-> ich denke, sphere liefert die Koordinaten in anderer Form als du es dir vorstellst
ausserdem würdest du ältere Schnittpunkte überschreiben...
Hallo, erstmal danke für deine antwort.
Hast du villeicht ne geschicktere Idee, wie ich die Kugeloberfläche bzw. die Gerade darstellen kann. Deine Anmerkungen zeigen, dass das prog so nicht so sinnvoll ist.
Naja, ich bearbeite grade auch so ein Problem, der Algo ist mit der zweiten Zeile schon okay.
Ich wollte nur darauf hinaus, dass du dir Gedanken machen solltest über deine Kugel. Ich hab die mir selber kreiert, weil ich mit sphere nicht klar kam (ich nutze auch nur ne Halbkugeloberfläche)
also for x, for y, for z
if (x^2+y^2+z^2<r^2) ...
ich kann mir nur grob vorstellen, wo mein problem mit der Kugeloberfläche besteht, nämlich in der form der matrizen für x,y,z. kannst du mir vielleicht mal deine version für die halbkugeloberfläche zeigen? das könnte mir sicherlich weiterhelfen.
grüße
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.