2011-01-17 17 views
9

Muszę połączyć trzy punkty za pomocą gładkiej krzywej. Przyjrzałem się tym samym pytaniom, na które już udzielono odpowiedzi w StackOverflow, ale wszystkie sugerują użycie Path.quadTo(). Nie rozumiem, dlaczego jest to uważane za poprawną odpowiedź, ponieważ krzywa Beziera zbliża się tylko do punktu środkowego (kontrolnego), ale nie przechodzi przez niego. W moim przypadku muszę dokładnie to przejść. Jak mogę to osiągnąć?Jak narysować krzywą za pomocą punktów drzewa w systemie Android?

Odpowiedz

4

Prawdziwe, potrzebne są wypusty Catmull Rom, które są gwarantowane, aby przejść przez każdy punkt. Jednak nie znam żadnej funkcji w API systemu Android, aby je narysować. Możesz również "oszukać" funkcję quadTo i przekazać jej wirtualny punkt środkowy, który obliczysz zgodnie z bieżącym punktem i następnym.

+1

Dzięki za wskazówkę , Przeszukałem Internet dokładnie i zakończyłem z następującym obliczeniem punktu kontrolnego dla quadTo: // interpolować trzy punkty z drugim punktem o określonej wartości parametru int [] interpolate (int x0, int y0, int x1, int y1, int x2, int y2, podwójne t) { podwójne t1 = 1,0-t; podwójne tSq = t * t; podwójny denom = 2,0 * t * t1; \t int cx = (int) ((x1 - t1 * t1 * x0 - tSq * x2)/denom); int cy = (int) ((y1 - t1 * t1 * y0 - tSq * y2)/denom); \t return new int [] {cx, cy}; } –

+1

@AndreyNovikov należy opublikować jako odpowiedź, aby pomóc innym – Sameer

-1

Here jest bardzo ładne, ilustrowany howto dla javascript, ale wszystkie stosowane metody są zwykle i tam jest analogiem w Androidy Path Class

Powiązane problemy