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
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.
Co z funkcją cubicTo (lub rCubicTo, jeśli potrzebujesz z punktu względnego)? http://developer.android.com/reference/android/graphics/Path.html#cubicTo(float, float, float, float, float, float)
cubicTo również korzysta z splajnów Beziera, które nie zapewniają tego, czego potrzebuje. –
Trwa 3 punkty. – C0deAttack
Here jest bardzo ładne, ilustrowany howto dla javascript, ale wszystkie stosowane metody są zwykle i tam jest analogiem w Androidy Path Class
- 1. Jak narysować krzywą mocy za pomocą ggplot2
- 2. Jak narysować krzywą SMOOTH za pomocą różnych punktów w coreplot ios?
- 3. narysować linię za pomocą dwóch punktów
- 4. Jak narysować krzywą Beziera w Androidzie
- 5. Jak narysować linie drzewa genealogicznego za pomocą HTML CSS?
- 6. Jak narysować obrazy w systemie Android (automatycznie)?
- 7. Jak narysować bitmapę w systemie Android?
- 8. Jak narysować wykres w systemie Android?
- 9. Jak narysować gładką krzywą przechodzącą przez niektórych punktach
- 10. Jak narysować koło z partycją w systemie Android?
- 11. Jak narysować parametryczną krzywą 3d z wygładzaniem w R?
- 12. Jak programowo w programie WPF narysować krzywą Beziera?
- 13. Montaż zamkniętą krzywą do zbioru punktów
- 14. Rysowanie łuku za pomocą SweepGradient w systemie Android
- 15. Jak narysować miliony punktów na mapach google?
- 16. Jak narysować koło przez płótno w systemie Android?
- 17. Jak narysować tekst z obramowaniem na MapView w systemie Android?
- 18. Jak mogę narysować krzywą Beziera przy użyciu PIL Pythona?
- 19. Jak narysować punkt za pomocą Core Graphics?
- 20. Jak mogę narysować schemat za pomocą LaTeX?
- 21. jak narysować serce za pomocą pylab
- 22. Wizualizacja drzewa za pomocą Javy
- 23. jak narysować półkole w Android
- 24. Jak utworzyć podmenu za pomocą przycisków radiowych w systemie Android?
- 25. Jak estymować zadania za pomocą punktów funkcyjnych?
- 26. Jak narysować punktów obrazów na skraju kręgu obrazu
- 27. Jak narysować ścieżkę na mapie za pomocą pliku kml?
- 28. Iterowanie za pomocą punktów podłączenia za pomocą Pythona
- 29. Jak dopasować krzywą za pomocą serii segmentowanych linii w programie Matlab?
- 30. jak narysować niestandardowe kształty za pomocą prostej tekstury w libgdx?
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}; } –
@AndreyNovikov należy opublikować jako odpowiedź, aby pomóc innym – Sameer