Ich bin die kubische Bezier-Kurve-Logik in meiner one of Android Application implementieren.Finden Sie einen neuen Kontrollpunkt, wenn der Endpunkt in der kubischen Bezier-Kurve ändert
Ich habe kubische Bezier-Kurve Code auf Leinwand in OnDraw der benutzerdefinierten Ansicht implementiert.
// 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);
Ich visualisieren obigen Code in der folgenden Abbildung.
[aktualisiert]
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
Ich möchte Benutzer ermöglichen, EndPoint von oben Kurve zu ändern, und auf der Grundlage der neuen Endpunkte, entkräften ich die Leinwand.
Aber Problem ist, dass Kurve durch zwei Kontrollpunkte, die nach der Änderung in EndPoint neu berechnet werden müssen.
Wie, ich möchte nur neue Kontrollpunkte finden, wenn EndPoint Wechsel von (300.200) bis (250.250)
Wie in folgendes Bild:
Bitte helfen Sie mir zwei zu berechnen neue Kontrollpunkte, basierend auf dem neuen Endpunkt, dass die Kurvenform unverändert zum vorherigen Endpunkt bleibt.
Ich verweise folgenden Referenz Links während Suche:
http://pomax.github.io/bezierinfo/
http://jsfiddle.net/hitesh24by365/jHbVE/3/
http://en.wikipedia.org/wiki/B%C3%A9zier_curve
Jede Bezugnahme Link auch in Antwort auf diese Frage zu schätzen.
, wie Sie die ersten beiden Kontrollpunkte Berechnung? Versuchen Sie, gemäß Benutzerbewegungsereignis zu zeichnen? –
@ArunCThomas: Ich habe die Frage mit Logik für die Auswahl von Standard-Kontrollpunkt aktualisiert –
Ich bin mir ziemlich sicher, dass ich das in http: //pomax.github abdecken.io/bezierinfo/# polybezier =) –