Wertebereich in Arrays festlegen



  • Hallo Zusammen,

    Ich habe ein Koordinatensystem, welches in Dreiecke unterteilt ist. X und Y sind Werte und ergeben einen Punkt in System welcher in einem dieser Dreiecke liegt. Zu meiner Frage: Ist es möglich irgendwie zu bestimmen in welchen dieser Dreiecke dieser Punkt liegt?
    Mein Ansatz wäre das komplette Koordinatensystem als Zweidimensionales Array darzustellen und dieses versuchen in Wertebereiche zu unterteilen, allerdings scheitert es ein bisschen an der Umsetzung da ich nicht genau weiß wie ich anfangen soll.

    Kleines bsp:

    00001
    00011
    00111
    01111
    11111

    Ich möchte z.b. Jetzt das Dreieck aus Einsen als Bereich festlegen (normal natürlich mit richtigen Werten) diesen die Nummer 1 zuweisen und wenn ein Wert innerhalb dieses Bereiches liegt eine 1 zurückgeben.

    Ist dies in C möglich bzw. wie kann ich das machen?

    Falls jemand andere Lösungsansätze hat wäre ich natürlich auch dankbar 🙂

    Danke schoneinmal 🙂


  • Mod

    Dein Ansatz scheint mir komisch, aber vielleicht habe ich dein Problem auch nicht richtig verstanden. Daher: Beschreib mal deine Eingangsdaten (insbesondere woher und wie die Dreiecke kommen) und was du als Ergebnis haben möchtest, und lass deinen eigenen Ansatz mit dem Array dabei mal ganz außen vor.



  • Nun ja es handelt sich um x und y. Stromstärke und Spannung. Das wäre das Koordinatensystem. Es sind nicht direkt Dreiecke, es handelt sich um Polygone, die Eckpunkte wären bekannt. Aus einer csv Datei sollen um die 1000 Werte je Strom u Spannung ausgelesen werden und bestimmt werden in welchem Polygon es sich befindet. Die Polygone sollen eben nummeriert werden und dementsprechend eine Nummer zurück gegeben werden je nach dem in welchen es eben liegt 🙂 hoffe du kannst mir folgen 🙂


  • Mod

    Wie viele Punkte gibt es denn in deiner Ebene? Vermutlich doch wohl so ungefähr unendlich viele. Willst du die alle in ein Array packen und vorberechnen?

    Hier ist, wie man die Zugehörigkeit eines Punktes zu einem Polynom berechnen kann:
    https://en.wikipedia.org/wiki/Point_in_polygon
    Beachte auch dringend den Hinweis in der Erklärung, dass das Problem für bestimmte Arten von Polygonen einfacher sein kann. Falls deine Polygone in solch eine Klasse fallen, kann die Lösung wesentlich einfacher sein!

    Obiges machst du dann für jeden deiner Datenpunkte mit jedem deiner Polygone. Nötigenfalls kann man die Polygone vorab auch grob nach ihrer Lage sortieren, so dass man nicht systematisch alle Möglichkeiten durchprobieren braucht.



  • Also es sind um die 30 Polygone.

    Die Seite die du geschickt hast habe ich auch schon gesehen, die Sache ist nur dass ich nicht wirklich weiß wie ich das programmieren soll. Ich studiere Informatik und komme jetzt ins 2. Semester, dh ich hab nicht wirklich so viel Ahnung. Mein Vater hat mir das nur gezeigt und gefragt ob ich sowas machen könnte und ich fand es eben interessant & da momentan eh Semesterferien sind dachte ich probier ich eben kurz mal rum, bisschen Übung mit einem Praxisbeispiel schadet bestimmt nicht.

    Wie gesagt, stell dir mal das Koordinatensystem mit dem 30 Polygonen vor. Würde man nun per Hand einen Wert mit Stromstärke und Spannung einzeichnen würde man ein Punkt innerhalb eines Polygones haben. Ich möchte nun herausfinden in welchem dieser Polygone der Punkt liegt.

    Wie gesagt, das mit den zweidimensionalen Array ist natürlich aufwändig, ich habe nicht mal eine Ahnung ob es funktionieren würde, das war lediglich eine Idee dir mir eingefallen wäre. Natürlich müsste ich dann alle 30 Polygone in das zweidimensionale Array reinprogrammieren, wovon ich natürlich auch nicht weiß ob das überhaupt funktioniert 😃

    Aber falls hier irgendjemand einen Alternativen Ansatz hat, wie man sowas programmieren könnte, bin ich natürlich für alles offen.

    Vielleicht geht das ja auch gar nicht in C. Vielleicht brauche ich dafür auch eine objektorientierte Programmiersprache, ich weiß es nicht, deswegen frage ich ja hier. 🙂

    Kurz und Knapp: Zwei Werte eingeben, bestimmen im welchen Polygon der Wert liegt, Polygon zurückgeben 😃

    Danke schoneinmal 🙂


  • Mod

    Ich habe dir erklärt, warum dein Ansatz nicht geht, denk darüber nach. Ich habe dir gezeigt, wie es richtig geht, denk darüber nach.

    Das ist eher eine Aufgabe für die Schule. Du solltest die Wahl deines Studiums noch einmal dringend überdenken, wenn du selbst im zweiten Semester überhaupt keinen Plan dafür hast. Jetzt hast du noch nicht so viel Zeit in etwas gesteckt für das du keine echte Lust oder Talent hast.

    EntertainEnterprises schrieb:

    [...alles was du über Programmierung und Informatik erzählst...]

    Das ist totaler Unsinn.



  • Danke für deine Antwort. Tut mir leid dass ich dir übers Internet nicht so einfach folgen kann aber ich werde mir deinen Ansatz noch einmal ansehen, danke dafür. Trotzdem finde ich es ziemlich unnötig zu behaupten jemand hätte kein Talent oder Lust. Hätte ich keine Lust würde ich mich nicht mit dieser Aufgabe in meiner Freizeit beschäftigen und Talent ist ja wohl relativ, mein erstes Semester habe ich in Programmieren mit 1,0 abgeschlossen und werde es auch weiter machen. Ich für meinen Teil hatte in meiner Schulzeit nie etwas mit Polygonen zu tun, mag sein dass es bei dir anders war, auch hatte ich in meiner Schulzeit kein Programmieren. Ich hatte mir hier lediglich Hilfe bzw. Anregung zur Lösung des Problems erhofft und keinen Rat den Studiengang zu wechseln, aber den Ansatz habe ich ja bekommen und werde damit arbeiten. Dankeschön, Thread kann gelöscht werden. 🙂



  • Kleiner Nachtrag:

    Habe eine alternative Möglichkeit gefunden und werde versuchen diesen umzusetzen.
    Danke trotzdem, werde mir dein Vorschlag trotzdem mal ansehen (:



  • Vielleicht geht das ja auch gar nicht in C. Vielleicht brauche ich dafür auch eine objektorientierte Programmiersprache

    OOP ist nur ein Programmierparadigma - es gibt keine Probleme die sich nur Exklusiv mit OOP lösen lassen - und eigentlich kann man auch jedes Problem in jeder Programmiersprache lösen - eben mehr oder minder sinnvoll

    der Punkt in Polygon Algorithmus ist die einfachste Lösung (alle anderen sehen nur einfacher aus) - dafür gibt es auch zig-tausend Beispiele bei google - wenn man so am Anfang steht wie du macht es keinen Sinn alles komplett selbst zu erdenken - orientiere dich ein bisschen und dann feile an deinen Fähigkeiten


Log in to reply