PathLib

    • Release

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Knekke.

      Name der Library:
      PathLib

      Beschreibung:
      Die Library ist dafür gedacht Pfade (Im Sinne einer Ansammlung von Punkten) zu bearbeiten. Im Moment beschränkt sich der Funktionsumfang auf das Glätten eines Pfades (Siehe Screenshots).

      Screenshots:


      Verwendete Programmiersprache:
      Visual Basic .NET
      IDE: VB2008 Express

      Systemanforderungen:
      .NET Framework 2.0

      Download:
      Library (.dll; 12kb)
      Source (.vb; 1.6kb)
      Library + Source + TestApp (.zip; 15kb gepackt, 36kb entpackt)

      Version: 1.0 (Bugs gefixt.)
      Verwendung

      VB.NET-Quellcode

      1. Dim path As New List(Of Point)
      2. 'Um einen Schritt geglätteter Pfad. Parameter: path() As Point
      3. path = PathLib.StepSmoothing(path.ToArray)
      4. 'Mit angegebener Qualität geglätteter Pfad. Parameter: path() As Point, quality As Integer
      5. path = PathLib.Smooth(path.ToArray, 4)
      6. 'Wenn der Pfad unter 3 Punkte hat wird er unverändert zurückgegeben


      Lizenz/Weitergabe:
      Freeware; OpenSource

      Nennung bei Verwendung ist ausdrücklich erwünscht. Die Library darf nicht einkompiliert werden.

      Edit:

      Bevor Jemand fragt wie ich die Punkte interpoliere:

      Man nimmt jeweils 2 Strecken und bildet die Mittelpunkte beider. Danach bildet man aus den beiden Mittelpunkten und dem Punkt, an dem die beiden Strecken aufeinandertreffen ein Dreieck. In diesem Dreieck bestimmt man per arithmetischem Mittel der Koordinaten den Schwerpunkt des Dreiecks. Zum Schluss fügt man dem Pfad die beiden Mittelpunkte der Strecken hinzu und ändert den Treffpunkt der Strecken in den Schwerpunkt des Dreiecks. Dies wiederholt sich bis zum Pfadende.

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Knekke“ () aus folgendem Grund: Verwendung nachgetragen

      z.B. Vektorgrafiken, Grobgerasterte Wegfindung glätten, Zeichenprogramme,... :)

      Obs wer hier braucht ist eine andere Frage.

      Mögliches Szenario:
      Jemand hat ein kleines Zeichentool mit GDI geschrieben. Im MouseMove Event werden nur jeweils die Koordinaten eins Pfades geaddet, danach wird der Pfad geglättet und gezeichnet. Somit wird unterbunden, dass durch das langsame Reagieren des MouseMove Events bei schnellen Mausbewegungen nur einzelne Punkte gesetzt werden.
      Sehr geil, das kann ich super gebrauchen, bzw. was ähnliches, aber da du genannt hat wie du Interpolierst kann ichs nun nachvollziehen, ich hätte es glaube nur mit müh und not hinbekommen.

      Gebrauchen kann man dies nämlich für Software die eine Lasergrafik Ausgabe macht. Wenn man da eine Form zeichnet wo jedoch 2 Punkte zuweit auseinaner sind, würden die Galvos (Spiegel die den Laserstrahl ablenken) kaputt gehen, deswegen muss man erstmal die strecke ausrechnen zwischen den Punkten und wenn der Wert überschritten wird muss Interpoliert werden.
      coole lib 8-)
      ist genau das was ich für eines meiner programme dringend brauche
      Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
      Es wäre schön wenn jemand mal auf Bugs testet :) Sonst änder ich das Präfix auf Release.

      Edit:

      Update 1.0

      Changelog:
      Crash gefixt, der aufgetreten ist wenn man versuchte, mit einer Qualitätseinstellung < 0 zu glätten.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Knekke“ ()