Mir kommt da gerade ein Idee, wie man nach einem Sechseck suchen könnte. Ich nehme zwei Punkte A und B. Bei einem Sechseck sind alle darin enthaltenen 6 Dreiecke, gleichseitig. Mit der Höhe hc = (a/2) * sqrt(3) erhalte ich den Punkt C womit ich den Mittelpunkt M des Sechsecks habe. Der Radius des Kreises, auf dem alle 6 Ecken liegen, ist r = (a/3) * sqrt(3). Wenn ich jetzt von M aus einen Zeiger (Punkt A = 0 Grad) mit der Länge r in 60 Grad Schritten drehe, komme ich zu den anderen Punkten des Sechsecks. Man müsste also prüfen, ob in dieser Umgebung des Kreises mit der angegeben Schrittweite Punkte liegen.
Allerdings könnte das auch ins nichts führen, wenn die Punkte A und B schlecht gewählt sind.
Edit: Dumme Sache...ich habe die 3. Dimension vergessen. Man müsste ja auch noch die z-Koordinate von C bzw. M bestimmen
wirklich schwer den Code zu verstehen. Ich bleibe aber am Ball.
Ein paar Fragen für das Weitere. Wie würde ich das nun erweitern, dass nur das mittlere der drei Sechsecke ausgegeben wird?
Beim Suchlauf habe ich bei der Visualisierung gesehen, dass er das mittlere Sechseck auch erwischt hatte, aber dann weiter geht.
Ich habe versucht die Hilfsfunktion in die Hauptdatei einzubauen, doch es kamen immer Fehler. Müssen solche definierten Funktionen immer als extra Datei geschrieben werden?
Viele Grüsse und noch einmal Danke für deine Mühe. Ich werde es verstehen lernen und nicht blind kopieren.
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
ich habe mal noch eine Version angehängt, in der die TODOs erledigt sind und die etwas besser kommentiert ist.
Diese Variante gibt jetzt nur noch die drei tatsächlichen Sechsecke zurück und keine Duplikate mehr.
Aus diesen drei Sechsecken das mittlere zu identifizieren überlasse ich nun tatsächlich dir als Übung. Ein Tipp: das mittlere Sechseck ist das einzige, das gemeinsame Punkte mit beiden der anderen Sechsecke hat. Zum Bestimmen einer Schnittmenge hilft INTERSECT.
Und dann wirst du natürlich sehen müssen, ob der Code auch bei anderen Datensätzen die gewünschten Ergebnisse liefert.
Wenn du die Hilfsfunktion in die Hauptdatei einbauen willst, musst du die Hauptdatei auch zu einer Funktion machen. Die erste Zeile einer solchen Funktion könnte z.B. so aussehen:
plötzlich passieren komische Dinge. Ich erhalte keinen Fehler, das Programm läuft ab, doch mit falschen Ergebnissen. Könntest du mir sagen was da passiert Harald?
In dieser Geometrie befindet sich ausschließlich ein einziges Sechseck, nicht mehr mehrere wie vorher.
Eigentlich sollte ich jetzt eine Matrix sechseck haben, in der die sechs Vektoren stehen, doch sechseck wird mir als 0x0 double angezeigt. Nur ein [] wird ausgegeben.
Gruß
p.s.
Ich werde heute anfangen zu lernen was es mit debuggen auf sich hat. Mal sehen, evtl. bringt mir das was _________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
das Sechseck sollte aus den ersten 6 Punkten gebildet werden. Der Abstand zwischen den jeweiligen Eckpunkten variiert aber zwischen 2.63 und 2.75, wird also nicht mehr als regelmäßiges Sechseck betrachtet, da wir eine Toleranz von 0.1 angegeben hatten.
Wenn du die Toleranzen etwas anpasst (z.B. verdoppelst), klappt es wieder.
Hi, ja daran lag es. Nun habe ich jedoch ein anderes Problem. Ich habe versucht den Fehler zu finden, bin jedoch gescheitert. An der Toleranz sollte es nicht liegen.
Der letzte Zeilenvektor ist falsch und gehört nicht zum Sechseck (die fünf darüber stimmen). Richtig wäre -1.7534 0.2017 5.3881
Ich weiss nicht mehr woran es liegen könnte Der Code ist der den du geschrieben hast Harald, den ich by the way noch immer versuche komplett zu verstehen (kein blindes copy &paste, ich will ja was lernen ).
Gruß
_________________
Besser ne Taube auf'm Dach als nen Stuhl inner Kiste
es kann sein, dass ich aufgrund deiner letzten Nachricht noch ein wenig an dem Code verändert habe. Er liefert mir drei Sechsecke, von denen das mittlere das richtige sein sollte.
Ich habe den Code in seiner momentanen Form nochmal angehängt.
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.