贝赛尔曲线模拟画圆

作者: 和平北路 | 来源:发表于2016-12-20 15:36 被阅读131次

原理

  1. 使用4段三阶贝赛尔曲线模拟圆弧
  2. 每段曲线的中点落在圆弧上

分析

  1. 三阶贝赛尔曲线方程


  2. 曲线绘制示意图


  3. 我们可以确定的有:
    起点:A(1, 0)
    终点:B(0, 1)
    两个控制点分别落在直线y=1和x=1上(AB两点的切线上),假设为A'(1, c) B'(c, 1)两点
    这里强制增加一个条件,圆弧终点(0.707, 0.707)落在贝赛尔曲线上
  4. 代入方程:
    得到c=0.5523

绘制

  1. 代码:
    @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawLine(0, P.y, screenWidth, P.y, paintLine); canvas.drawLine(P.x, 0, P.x, screenHeight, paintLine); canvas.drawPoint(P.x + R, P.y - R * C, paintPoint); canvas.drawPoint(P.x + R * C, P.y - R, paintPoint); path.moveTo(P.x + R, P.y); path.cubicTo(P.x + R, P.y - R * C, P.x + R * C, P.y - R, P.x, P.y - R); canvas.drawPath(path, paintBezier); }

  2. 效果图如下:


相关文章

网友评论

    本文标题:贝赛尔曲线模拟画圆

    本文链接:https://www.haomeiwen.com/subject/ahixvttx.html