2013-04-17 22 views
5

Próbuję dowiedzieć się, jak narysować elastyczną linię między dwoma punktami w openGL/Cocos2d na iPhonie. Coś takiegoCzy istnieje wspólna technika rysowania linii "rozciągliwej"

enter image description here

Gdzie cieńsza „band” get jako linia staje się dłuższy. iOS stosuje tę samą technikę, do której dążę w aplikacji Mail.app, przeciągnij, aby odświeżyć.

Po pierwsze, czy istnieje nazwa tego typu rzeczy?

Moja pierwsza myśl polegała na wykreśleniu punktu na promieniu początkowych i końcowych okręgów w oparciu o kąt pomiędzy dwoma i narysowania krzywej kwadratowej beziera z wykorzystaniem odległości/2 jako punktu kontrolnego. Ale nie jestem matematykiem, więc staram się wymyślić, jak umieścić punkt kontrolny, który dostosuje grubość ścieżki.

Ale większy problem polega na tym, że muszę wypełnić kształt kolorem, a to nie wydaje się możliwe przy krzywych OpenGL beziera, o ile mogę to stwierdzić, ponieważ krzywe nie wydają się być częścią kształt, który można wypełnić.

Spojrzałem więc na użycie splajnu utworzonego za pomocą tablicy punktów, ale to otwiera zupełnie nowy świat matematycznego bólu, ponieważ musiałbym określić, gdzie znajdują się wszystkie punkty wzdłuż krawędzi ścieżki.

Więc zanim przejdę przez tę króliczą dziurę, zastanawiam się, czy jest coś prostszego, co przeoczyłem, czy ktoś może wskazać mi najbardziej efektywną technikę.

+0

Po prostu myśl: Nie sądzę, że potrzebujesz tutaj splajnów/beziera. Spójrz na krzywiznę, wygląda jak mała część bardzo dużego koła, które przebiega przez górny i dolny koniec każdego okręgu końcowego. Być może więc znajdziesz sposób, aby "zgnieść" wyciśniętą część za pomocą kółek. Im więcej punktów końcowych jest rozłożonych, tym mniejszy jest promień okręgu stempla. – LearnCocos2D

+0

Pozdrawiam, chociaż przyjrzawszy się bliżej domyślnemu obiektowi typu "odsuń i odśwież" na iOS, zdecydowanie nie używa się tego podejścia. Ale poproszę twoją sugestię o jakieś śledztwo. – gargantuan

+0

Czy znalazłeś nazwę tego przedmiotu? –

Odpowiedz

2

nie jestem pewien o „wspólnym” techniki, że ludzie używają, innych niż jej obliczenia matematyczne, ale ten projekt, SlimeyRefresh, jest dobrym przykładem tego, jak tego dokonać.