Announcement

Collapse
No announcement yet.

Punkt inner- oder außerhalb eines geschlossenen Pfades - Algorithmus gesucht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Punkt inner- oder außerhalb eines geschlossenen Pfades - Algorithmus gesucht

    Hallo Experten,

    auf einem Panel zeichne ich mehrere gefüllte geschlossene Pfade des Typs[highlight=c#]System.Drawing.Drawing2D.GraphicsPath[/highlight]Ein Pfad kann neben Geraden auch kubische Bézierkurven, sowohl konvex als auch konkav geformt, enthalten. Fertig sieht das in etwa so aus, wie der Grundriss einer Modelleisenbahnschiene ohne jegliche Details.

    Wenn der Benutzer auf das Panel klickt, erfahre ich den Punkt des Klicks.

    Ich möchte wissen,
    - ob der Punkt außerhalb aller Pfade liegt,
    - auf welchem Pfad der Punkt liegt oder
    - innerhalb welchen Pfades der Punkt liegt.

    Ich habe folgendes gefunden:
    http://www.koders.com/csharp/fid9C02...?s=thread#L282
    und zwei Probleme damit

    1. Der Pfad hier besteht nur aus Geraden. Ich bezweifle, dass der Algorithmus mit Krümmungen klarkommt.
    2. Der Kern des Algorithmus besteht aus den Bedingungen "Punkt liegt in X-Richtung zwischen zwei anderen Punkten" und "Ein Rechteck hat einen größeren Flächeninhalt als ein anderes". Ich verstehe die Idee dahinter nicht.

    Kennt jemand einen Algorithmus, der mit Bézierkurven klarkommt?

  • #2
    Kennt jemand einen Algorithmus, der mit Bézierkurven klarkommt?
    Kann da nicht wirklich helfen aber ich bezweifle das es da einen Algo gibt.
    Es gibt wahrscheinlich einen wenn der Pfad aus genau einer Bézierkurve besteht aber sobald du einen zusammengesetzten Pfad hast der nicht nur aus Geraden besteht ist die Beschreibung des gesamten Kurvenzug unstet (nicht durch genau eine Formel f(x) beschreibbar) und damit nicht mit einem simplen Algorithmus zu erschlagen.

    Comment


    • #3
      Hallo

      Code:
        System.Drawing.Drawing2D.GraphicsPath.IsVisible(integer,integer)
      reicht nicht?

      Comment


      • #4
        Originally posted by Hauti View Post
        Code:
        System.Drawing.Drawing2D.GraphicsPath.IsVisible(integer,integer)
        reicht nicht?
        Doch, das reicht. Vielen Dank für den Tipp.

        Comment

        Working...
        X