AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Mathematik: Konturen (Punkte-Array) vergleichen

Mathematik: Konturen (Punkte-Array) vergleichen

Ein Thema von Matze · begonnen am 21. Nov 2018 · letzter Beitrag vom 17. Dez 2018
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#1

AW: Mathematik: Konturen (Punkte-Array) vergleichen

  Alt 21. Nov 2018, 10:18
Denn wenn du nur 4 Punkte hast, weißt du über die Kontur eigentlich nichts.
Der gezeigte Algorithmus geht von einer geraden Verbindung zwischen den Punkten aus - darauf bezog sich mein Einwand. Bei andersartigen Konturabschnitten (Kreisbogen, Bezier) kommt man mit zwei Punkten pro Anschnitt eh nicht aus und der Algorithmus müsste dann ganz anders aussehen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mathematik: Konturen (Punkte-Array) vergleichen

  Alt 21. Nov 2018, 11:08
Mir fällt da folgender Ansatz ein:

Voraussetzung: Die Kontur ist durch Geraden zwischen den Konturpunkten definiert.

- Es wird eine innere und äußere Kontur gebildet, indem die Konturgeraden um das Maß der Toleranz nach innen bzw außen parallel verschoben werden.

- An den Knickpunkten werden die Schnittpunkte der neuen inneren bzw äußeren Konturgeraden bestimmt. Das sind dann die Eckpunkte der Toleranzfläche.

- Dann wird für jeden Punkt der zu prüfenden Kontur geprüft, ob er innerhalb der Toleranzfläche liegt. Dazu bildet man eine Gerade von dem zu prüfenden Punkt nach irgendwo ganz weit außerhalb und bestimmt die Anzahl der Schnittpunkte dieser Gerade mit der inneren und äußeren Kontur der Toleranzfläche. Ist die Anzahl ungerade, liegt der Punkt innerhalb der Toleranz.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mathematik: Konturen (Punkte-Array) vergleichen

  Alt 21. Nov 2018, 12:34
- Es wird eine innere und äußere Kontur gebildet, indem die Konturgeraden um das Maß der Toleranz nach innen bzw außen parallel verschoben werden.

- An den Knickpunkten werden die Schnittpunkte der neuen inneren bzw äußeren Konturgeraden bestimmt. Das sind dann die Eckpunkte der Toleranzfläche.
Das hört sich einfacher an als es tatsächlich ist und kann ganz schön tricky werden, wenn durch die Parallelverschiebung und die Schnittpunktberechnung plötzlich ganze Teilstrecken verschwinden (gerade bei kurzen Teilstrecken im Verhältnis zum Toleranzwert). Diese Beispiel zeigt dabei noch einen relativ simplen Fall.

Die Abstandsberechnung ist da schon deutlich stabiler und vermutlich auch effizienter.
Angehängte Grafiken
Dateityp: png 21-11-_2018_13-28-40.png (2,8 KB, 12x aufgerufen)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mathematik: Konturen (Punkte-Array) vergleichen

  Alt 21. Nov 2018, 15:39
Hört sich nach Polygonen an, könnte sein das Clipper was dabei hat.
So in der Art, Schnittmenge o.ä.

Rollo
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz