Wprowadzam sześcienną logikę krzywej Beziera w jednej z aplikacji Android.Znajdź nowy punkt kontrolny, gdy zmiana punktu końcowego w sześciennej krzywej Beziera
Zaimplementowałem sześcienny kod krzywej Beziera na płótnie w onDraw widoku niestandardowego.
// Path to draw cubic bezier curve
Path cubePath = new Path();
// Move to startPoint(200,200) (P0)
cubePath.moveTo(200,200);
// Cubic to with ControlPoint1(200,100) (C1), ControlPoint2(300,100) (C2) , EndPoint(300,200) (P1)
cubePath.cubicTo(200,100,300,100,300,200);
// Draw on Canvas
canvas.drawPath(cubePath, paint);
Wizualizuję powyższy kod na poniższym obrazku.
[Aktualizacja]
Logic for selecting first control points, I've taken ,
baseX = 200 , baseY = 200 and curve_size = X of Endpoint - X of Start Point
Start Point : x = baseX and y = baseY
Control Point 1 : x = baseX and y = baseY - curve_size
Control Point 2 : x = baseX + curve_size and y = baseY - curve_size
End Point : x = baseX + curve_size and y = baseY
Chcę umożliwić zmianę punktu końcowego powyżej krzywej, a na podstawie nowych punktów końcowych, ja unieważnić płótna.
Problem polega na tym, że Krzywa jest utrzymywana przez dwa punkty kontrolne, które należy ponownie przeliczyć po zmianie w punkcie końcowym.
jak, po prostu chcę, aby znaleźć nowe punkty kontrolne przy EndPoint zmiana (300,200) do (250,250)
jak w poniższym obrazie:
Proszę mi pomóc obliczyć dwa nowe Punkty kontrolne oparte na nowym punkcie końcowym, którego krzywa kształtu będzie zachowywać się tak samo jak poprzedni punkt końcowy.
odsyłam poniższych linków referencyjnych podczas poszukiwań:
http://pomax.github.io/bezierinfo/
http://jsfiddle.net/hitesh24by365/jHbVE/3/
http://en.wikipedia.org/wiki/B%C3%A9zier_curve
dowolny link referencyjny docenione również w odpowiedzi na to pytanie.
jak ty obliczania pierwsze dwa punkty kontrolne? Czy próbujesz rysować zgodnie ze zdarzeniem ruchu użytkownika? –
@ArunCThomas: Zaktualizowałem Pytanie z logiką wyboru domyślnego punktu kontrolnego –
Jestem prawie pewien, że omówię to w http: //pomax.github.io/bezierinfo/# polybezier =) –