如何获得任何曲线的点(上)

How to get point (on) of any curved line

我想要像下图这样的东西

我通过 canvas.but 创建了一条曲线,现在我不知道如何获得圆的坐标。如果它可以通过 arc 完成然后解释 how.how 我做了很多

我试过的如下:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    PointF curvePoint = new PointF(580, 120); //curve point
    PointF mPoint2 = new PointF(60, 700); //Last point

    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(4);
    paint.setColor(Color.GRAY);


    Path myPath1 = drawCurve(curvePoint, mPoint2);
    canvas.drawPath(myPath1, paint);

}

private Path drawCurve(PointF mPointa, PointF mPointb) {

    Path myPath = new Path();
    myPath.moveTo(600, 60);  // starting point

    myPath.quadTo(mPointa.x, mPointa.y, mPointb.x, mPointb.y);

    return myPath;
}

请帮忙!

获取二次贝塞尔曲线上的一个点。

private PointF getPointOnQuad(PointF p1, PointF p2, PointF p3, float p){    
        float x1 = (p2.x - p1.x) * p + p1.x;
        float y1 = (p2.y - p1.y) * p + p1.y;
        float x2 = (p3.x - p2.x) * p + p2.x;
        float y2 = (p3.y - p2.y) * p + p2.y;
        PointF point = new PointF((x2 - x1) * p + x1, (y2 - y1) * p + y1);        
        return point;
}

Returns p = 0 to 1 沿曲线 p1p2p3 的点。其中 p = 0 是曲线的起点,p = 0.5 是中途,p = 1 是终点。点p1是起点,p2是控制点,p3是终点。

为了让你的曲线得到中点,

PointF pointOnCurve = getPointOnQuad(new PointF(600,60), mPointa, mPointb, 0.5);