贝赛尔曲线模拟画圆

原理

  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. 效果图如下:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容