2016-03-20 15 views
1

Ich verwende pygame um Polygone zu zeichnen, aber wenn die Linie zu dick ist, gibt es Lücken in den Kanten des Polygons. Ich möchte, dass diese Lücken gefüllt werden. Die Lösung, die ich gefunden habe, war ein gefülltes Polygon mit 4 Punkten in allen Lücken, wie Sie auf dem Bild unten sehen können. Aber ich weiß nicht, wie ich die 4 Punkte des Polygons finden soll und das ist meine Frage. Auch wenn Sie eine bessere Lösung finden, wäre das großartig.Lücken in der Kante eines Polygons füllen

What I need

Hinweis: Das Polygon ist nicht immer regelmäßig, es ist nur von vielen Punkten gemacht. Es ist auch in Ordnung, wenn Ihre Lösung nicht in Python ist.

+1

Sie möchten eine Gehrungsverbindung. Eine runde Verbindung ist viel einfacher und sieht auch gut aus. Sehen Sie das Bild in http://stackoverflow.com/a/10943245/107090. – lhf

+0

Ich könnte beide, aber ich werde mit Mitre –

Antwort

1

Wenn Ihr Polygon keine spitzen Winkel hat (wobei sich die Richtung um mehr als 90 ° ändert), an jedem Eckpunkt, verlängern Sie beide Linien um (lineWidth/2)*tan(angle). Der Winkel ist der Betrag der Richtungsänderung, nicht der innere Winkel zwischen den Segmenten.

Wenn Sie spitze Winkel haben, wird es komplizierter. Die Liniensegmente können nicht mehr als Rechtecke gezeichnet werden und Sie müssen nur die "äußere" Kante des Polygons verlängern. Die Formel dafür ist die gleiche.

+0

Ich muss mit allen Arten von Polygonen arbeiten, so dass nicht funktionieren würde, wie Sie gesagt –

0

Sie können Linien erweitern, damit sie die Lücke füllen können. Obwohl picture nicht gut ist, kann es ausreichen, um die Idee zu visualisieren.

+0

Ich bemerkte @Frank Puffer vorgeschlagen die gleiche Idee. –

Verwandte Themen