PHP Bild Koordinaten Berechnen für Kreise

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Bild Koordinaten Berechnen für Kreise

    Guten Abend

    Heute habe ich für mich zumindest bisher eine unlösbare Aufgabe. Vielleicht kann mir da jemand weiterhelfen.

    Ich habe ein Bild was z.B. eine Landkarte sein kann oder ein beliebiges Bild. Genau in der Mitte fangen Kreise an. Am einfachsten ist dies glaube ich mit einer Dartscheibe zu vergleichen ähnlich diesem Bild (https://www.shoot-club.de/images/pro...lzen--Du-1.jpg) Ich glaube dies trifft es am besten. Ich habe auf diesem Bild mehrere Koordinaten bestimmt. Wenn wir bei unserem Beispiel bleiben wären dies z.B. Pfeillöcher.

    Nun würde ich gerne die Punkte bestimmen. Sagen wir ich habe 10 Kreise. Der innerste Kreis ist 4 cm gross, und alle anderen Kreise haben einen Abstand von 2 cm.

    Da der Prozess etwas zu schwer zu erklären ist bleibe ich beim Beispiel von der Dartscheibe. Für mich stellen sich nun Fragen die ich bisher mit google noch nicht lösen konnte und hoffe ihr könnt mir da helfen:

    - Das Bild erstelle ich selber. Das heisst ich habe die pixelgrösse. Wie kann ich aber nun die Kreisdaten in eine Datenbank mit einem Wert speichern? Also nicht das Speichern ist das Problem, sondern die Werte zu finden.
    - Dies benötige ich schlussendlich um den Kreis zu bestimmen. Ich möchte schlussendlich sagen können KoorinateA ist im Kreis 3, KoordinateB im Kreis 6 usw.
    - Wäre dies auch mglich wenn es keine Kreise sondern Ovale sind?

    Vielen Dank schon im Voraus für jede Hilfe.

    Gruss

    Koda

  • #2
    Mathematikgrundlagen: Trigonometrie

    Wo genau liegt das Problem?

    Kommentar


    • #3
      Hi

      Vielen Dank für deine schnelle Antwort. Meine Probleme fangen hier leider schon von Grund auf an.

      Mein Bild ist 500 x 500px. Das heisst die Koordinate für den Mittelpunkt liegt bei x und y 250.
      Wenn ich die Dartscheibe physisch anschaue hat der innerste Kreis 4 cm. Alle weiteren Kreise haben einen Abstand von 2 cm. 10 Kreise sind vorhanden.

      Fangen wir ganz am anfang an. Mein erstes Problem liegt darin, wie finde ich heraus in welchem Kreisabschnitt z.B. die Mittelkoordinate x=76, y=81 (plus 0.5cm) ist. das Loch ist 0.5cm gross. Dann wäre es wichtig, wenn der Kreis angerissen ist oder z.B. 0.4mm vom Kreis weg ist soll der nächste Kreis genommen.

      Ich frage mich ist dies überhaupt mit PHP Möglich zu berechnen?

      Gruss

      Koda

      Kommentar


      • #4
        Zitat von Koda Beitrag anzeigen
        Vielen Dank für deine schnelle Antwort. Meine Probleme fangen hier leider schon von Grund auf an.

        Mein Bild ist 500 x 500px. Das heisst die Koordinate für den Mittelpunkt liegt bei x und y 250.
        Wenn ich die Dartscheibe physisch anschaue hat der innerste Kreis 4 cm. Alle weiteren Kreise haben einen Abstand von 2 cm. 10 Kreise sind vorhanden.
        Bleib bitte bei einer Einheit. Entweder Pixel oder Zentimeter.

        Zitat von Koda Beitrag anzeigen
        Fangen wir ganz am anfang an. Mein erstes Problem liegt darin, wie finde ich heraus in welchem Kreisabschnitt z.B. die Mittelkoordinate x=76, y=81 (plus 0.5cm) ist. das Loch ist 0.5cm gross. Dann wäre es wichtig, wenn der Kreis angerissen ist oder z.B. 0.4mm vom Kreis weg ist soll der nächste Kreis genommen.
        Code:
        if (radius > (50mm - 0.4mm)) {
            // nächter Kreis
        } else {
            // im Loch
        }
        Zitat von Koda Beitrag anzeigen
        Ich frage mich ist dies überhaupt mit PHP Möglich zu berechnen?
        Ja, PHP beherrscht die Grundrechnungsarten und stellt Winkelfunktionen zur Verfügung.

        Kommentar


        • #5
          Hi

          Vielen Dank. Bei einer Einheit zu bleiben ist für mich noch sehr schwer da das Bild die Pixelgrösse hat genau wie die Koordinaten in px sind. Die Dartscheibe habe ich ja vor mit in cm.
          Wie gesagt fehlt es mir schon von Anfang an am Wissen wie ich am einfachsten die einzelnen Kreise berechne für die DB um zu sagen welcher Kreis welchen Wert hat und geht weiter mit dem prüfen welcher Wert dann mein "loch" hat. Da hilft mir der Schnippsel leider nicht viel. Aber Danke.

          Werde mich noch bei google weiter schlau machen ob ich mehr finde da mir nicht unbedingt die Kreisberechnung das Problem ist sondern der ganze ablauf. Ggf finde ich noch ein schnippsel dazu. Melde mich wenn ich was finde.

          Gruss Koda

          Kommentar


          • #6
            Zitat von Koda Beitrag anzeigen
            Vielen Dank. Bei einer Einheit zu bleiben ist für mich noch sehr schwer da das Bild die Pixelgrösse hat genau wie die Koordinaten in px sind. Die Dartscheibe habe ich ja vor mit in cm.
            Auch die Dartscheibe hat auf dem Bild eine Größe in Pixel

            Zitat von Koda Beitrag anzeigen
            Wie gesagt fehlt es mir schon von Anfang an am Wissen wie ich am einfachsten die einzelnen Kreise berechne für die DB um zu sagen welcher Kreis welchen Wert hat und geht weiter mit dem prüfen welcher Wert dann mein "loch" hat. Da hilft mir der Schnippsel leider nicht viel. Aber Danke.
            Ich versteh immer noch nicht, wo das Problem liegt. Und was hat eine Datenbank damit zu tun? Wo die Daten herkommen, ist ja für die Berechnung irrelevant.

            Zitat von Koda Beitrag anzeigen
            Werde mich noch bei google weiter schlau machen ob ich mehr finde da mir nicht unbedingt die Kreisberechnung das Problem ist sondern der ganze ablauf. Ggf finde ich noch ein schnippsel dazu. Melde mich wenn ich was finde.
            Wenn für dich der Grundlegende Ablauf einer Programmierung ein Problem darstellt, hast du aber ein falsches Hauptthema gewählt. Denn die Berechnung von Koordinaten in Kreisen hat grundsätzlich mal nix mit PHP und Datenbanken zu tun. Diese Aufgabe liegt schon eine Ebene höher.
            Zuletzt geändert von h3ll; 25.05.2014, 19:17.

            Kommentar


            • #7
              Hi

              Das Proble leigt eindeutig auf der Mathematischen Seite wobei es mir hier schon schleierhaft ist wie dies mit PHP zu erledigen ist Mit solcher Mathematik habe ich nichts am Hut. Dies ist eine Ausnahme das ich dies benötige.

              Datenbank: Ich dachte, wenn ich es schaffe zu berechnen welchen Radius die einzelnen Kreise haben kann ich dies so in die Datenbank schreiben. Also in Form von:
              Mittelpunkt = 150
              In der DB:
              Kreis1 = Radius 20px mit Wert 20
              Kreis2 = Radius 30px(20 plus 10) Wert 18
              Kreis3 = Radius 40px (20 plus 2*10) Wert 16
              usw
              Dies wäre ja noch machbar in dem ich einfach den Mittelpunkt wähle plus die cm des Radius in px umgerechnet.

              Nun habe ich kein Problem damit zu wissen das ich meine x und y Koordinate mit 2px Radius habe. So wollte ich mit der Datenbank arbeiten um dann die Abfrage zu gesalten. Ich wollte ja noch den nächst höheren Wert falls er genau an der Kreislinie ist oder mit einer entfernung von maximal 2 px dran ist. Da könnte ich ja dann einfach statt 2 px radius 4 draus machen. Wäre ja nicht das Problem.

              Und genau hier fehlt es an dem Mathematischen wissen gepart mit der Programmierung wie finde ich nun heraus welcher Wert mein Punkt hat.

              Gruss

              Koda
              Zuletzt geändert von Koda; 25.05.2014, 19:27.

              Kommentar


              • #8
                Zitat von Koda Beitrag anzeigen
                Das Proble leigt eindeutig auf der Mathematischen Seite wobei es mir hier schon schleierhaft ist wie dies mit PHP zu erledigen ist Mit solcher Mathematik habe ich nichts am Hut. Dies ist eine Ausnahme das ich dies benötige.
                Hätte man damals in der Schule nur besser aufgepasst

                Zitat von Koda Beitrag anzeigen
                Datenbank: Ich dachte, wenn ich es schaffe zu berechnen welchen Radius die einzelnen Kreise haben kann ich dies so in die Datenbank schreiben. Also in Form von:
                Mittelpunkt = 150
                In der DB:
                Kreis1 = Radius 20px mit Wert 20
                Kreis2 = Radius 30px(20 plus 10) Wert 18
                Kreis3 = Radius 40px (20 plus 2*10) Wert 16
                usw
                Dies wäre ja noch machbar in dem ich einfach den Mittelpunkt wähle plus die cm des Radius in px umgerechnet.
                Ja. Das macht Sinn, wenn du mehrere Dartscheiben hast. Bei einer einzigen Dartscheibe wäre dafür eine Datenbank ein wenig Overkill.

                Zitat von Koda Beitrag anzeigen
                Nun habe ich kein Problem damit zu wissen das ich meine x und y Koordinate mit 2px Radius habe. So wollte ich mit der Datenbank arbeiten um dann die Abfrage zu gesalten. Ich wollte ja noch den nächst höheren Wert falls er genau an der Kreislinie ist oder mit einer entfernung von maximal 2 px dran ist. Da könnte ich ja dann einfach statt 2 px radius 4 draus machen. Wäre ja nicht das Problem.
                Wozu sollte man so eine Abfrage in der Datenbank brauchen? Wo liegt der Sinn in der Praxis?

                Zitat von Koda Beitrag anzeigen
                Und genau hier fehlt es an dem Mathematischen wissen gepart mit der Programmierung wie finde ich nun heraus welcher Wert mein Punkt hat.
                Du solltest nicht versuchen zwei Probleme gleichzeitig zu lösen. Die Schwierigkeiten vervielfachen sich sonst. Versuch das Problem erst mal auf dem Papier zu lösen.

                Wie gesagt, das Problem ist mit Trigonometrie lösbar. Zu dem Thema gibt es haufenweise Bücher und Internetseiten.

                Tipp: Satz des Pythagoras ? Wikipedia

                Kommentar


                • #9
                  Guten Abend

                  Vielen Dank. Das war genau der richtige Ansatz. So kann ich die differenz vom Mittelpunkt bis zu meinem gesetzten Punkt berechnen und weiss nun welche Wertung es hat. Danke.

                  ABER Hast du auch eine Idee ob dies mit Ovalen "Kreisen" geht? Die Ovale sind immer gleich ist. Also seitlich haben die Ringe immer 40px abstand und in der höhe immer sagen wir 55px (Hab leider nicht grad die richtigen Daten zur Hand. Sowas wie hier: http://www.birchwoodcasey-deutschlan...-mit-farbe.jpg aber mit mehr Ringen.). Hast du da ggf auch eine Idee?

                  Gruss und Danke

                  Koda

                  Kommentar


                  • #10
                    Das sind weder Kreise, noch Ovale. Das Einfachste wäre wohl, wenn man sich das als Kreis vorstellt, der in zwei Hälfte geteilt und ein gerades Zwischenstück eingesetzt wurde.

                    Kommentar


                    • #11
                      Zitat von h3ll Beitrag anzeigen
                      Das sind weder Kreise, noch Ovale. Das Einfachste wäre wohl, wenn man sich das als Kreis vorstellt, der in zwei Hälfte geteilt und ein gerades Zwischenstück eingesetzt wurde.
                      Hi

                      Vielen dank. Da ich grad auf anhieb solche Ovale gefunden habe wie ich verwende dachte ich schon das sei ein Standard aber da finde ich sicher was

                      Gruss

                      Koda
                      Zuletzt geändert von Koda; 25.05.2014, 22:22.

                      Kommentar

                      Lädt...
                      X