Verfasst am: 28.05.2013, 15:48
Titel: prüfen ob Punkte collinear sind
Hallo
ich habe folgendes Problem:
Ich möchte prüfen, ob wenigstens 3 Punkte in einer Matrix eine Ebene aufspannen um später mit convhull eine Umhüllende zu generieren.
Hier ein Beispiel:
Code:
punkte =[6-2 2-1 5-1 7-2];
convhull(punkte(:,1),punkte(:,2))
da hast du mich jetzt abgehängt. Du berechnest das Scalarprodukt aus dem Vector 1-2 und 1-l. Aber was ist denn mit 1-3 und 1-l. Wenn ich jetzt z.B. 10 punkte habe, dann müsste ich ja alle möglichen Vektoren vergleichen, nicht nur 1-2 und 1-(1-10).
Kann aber auch sein ich versteh das jetzt nicht so ganz.
P.S.: gibt es in Matlab nicht so was wie (convhull hat einen Error, daher bitte überspringen)?
ich hab das so verstanden das du nur gucken wolltest ob wenigstens 3 Punkte in einer Matrix eine Ebene aufspannen . und das macht meien funktion unter der vorraussetzung das die ersten beiden punkte nicht identisch sind. welche startpunkt du nimmst ist dabei vokommen banane aber zwecks for schleife hab ich mich mal an die reihenfolge im vektor gehalten.
Zitat:
Wenn ich jetzt z.B. 10 punkte habe, dann müsste ich ja alle möglichen Vektoren vergleichen, nicht nur 1-2 und 1-(1-10).
Ja, du hast das schon richtig verstanden. Vielleicht ist dein Weg auch eine gute Lösung. Ich weiss es aber noch nicht so genau.
Mich hat nur verwundert das du sagst: "Wenn die Vektoren senkrecht stehen (Skalarprodukt=0) dann break" Das hab ich nicht ganz verstanden.
Deine Idee aber mit dem Vektorprodukt (cross) und eine Dim mehr müsste schon gehen. Ist das die Lösung die ich machen sollte?
der break is da nur weil er ja nicht weiter machen muss wenn einen vektor gefunen hat der nicht coliniar ist. da kannst du aber euch andere sachen einfügen.
randbemerkung
du hast 2d werte
wenn du also 2 punkte hast die nicht identisch sind sind die schonmal auf einer graden.
jetzt must du nur noch gucken ob einer der 7 anderen punkt nicht auch auf dieser graden liegen.
ich bin leider immer noch nicht richtig am Ziel. Ich habe aber diesen Artikel gefunden:
http://blogs.mathworks.com/loren/2008/06/06/collinearity/#22
Leider fehlt mir ein bisschen die wirkliche Loesung. Welchen Code sollte ich denn jetzt nehmen und wie geh ich mit mehr als 3 Punkten um?
Und kann mir noch jemand sagen, wie ich diesen code in ein m.file einbauen kann?
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.