Mam ścieżkę złożoną z listy punktów 2D. Chcę zamienić je w pasek trójkątów, aby utworzyć teksturowaną linię o określonej grubości (i inne tego typu rzeczy). Zasadniczo lista punktów 2D musi stać się listą wierzchołków określających obrys wieloboku, który w przypadku renderowania renderowałby linię. Problem polega na obsłudze połączeń narożnych, miterów, czapek itp. Powstały wielokąt musi być "idealny" w sensie bez nadmiernego przeciągania, czystych połączeń itp., Aby można było go wytłaczać lub w inny sposób bawić się.Jak renderować grube linie 2D jako wielokąty?
Czy istnieją jakieś proste zasoby o wartości , które mogą zapewnić wgląd algorytmu, kod lub dodatkowe informacje na temat robienia tego w wydajny sposób?
Absolutnie NIE chcę pełnej biblioteki wektorowej 2D (cairo, antigrain, OpenVG itp.) Z krzywymi, łukami, kreskami i wszystkimi dzwonkami i gwizdkami. Kopałem w wielu drzewach źródłowych dla implementacji OpenVG i innych rzeczy, aby znaleźć wgląd, ale to wszystko jest okropnie zawiłe.
Zdecydowanie jestem gotów samemu go zakodować, ale istnieje wiele zdegenerowanych przypadków (małe segmenty + grube szerokości + ostre rogi), które tworzą wszelkiego rodzaju problemy z łączeniem. Nawet niewielka pomoc zaoszczędziłaby mi godzin próbując poradzić sobie z nimi wszystkimi.
EDYCJA: Oto przykład jednego z tych zdegenerowanych przypadków, który powoduje brzydotę, jeśli po prostu przechodzisz od wierzchołka do wierzchołka. Czerwony to oryginalna ścieżka. Pomarańczowe bloki to prostokąty rysowane na określonej szerokości wyrównane i wyśrodkowane na każdym segmencie.
http://www.freeimagehosting.net/uploads/52dc639727.png
Ja też tego chcę. Zrobiłem to w prototypie, używając prostych pudełek między punktami, ale ostatecznie trzeba je naprawić. Mam nadzieję, że twoje pytanie przyciąga właściwe odpowiedzi. Tak czy inaczej, wróć do nas i powiedz nam, co ostatecznie zrobiłeś. –
W odpowiedzi na twoje zdjęcie nie przecinasz kątów, przechodzisz prostopadle do linii. –
Tak, wiem. To jest pre-whatever-join-algorithm-gets-applied. Po prostu ilustruję sprawę problemu, a nie to, co dzieje się, gdy faktycznie coś do niej zastosujesz. –