开发笔记

  • 首页
  • 工具箱
三味线的博客
  1. 首页
  2. 算法
  3. 正文

贝塞尔曲线原理及实现

2018-04-18 1026点热度 0人点赞 0条评论

贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由 Paul de Casteljau 于1959年运用 de Casteljau 算法开发,以稳定数值的方法求出贝塞尔曲线。

1.线性贝塞尔曲线

P(t)=(1-t)P0+tP1 , 0<=t<=1;

2.二次贝塞尔曲线

P(t)=(1-t)2P0+2t(1-t)P1+t2P2 ,0<=t<=1;

P0Q0:P0P1=P1Q1:P1P2=Q0B:Q0Q1

3.三次贝塞尔曲线

P(t)=(1-t)3P0+3t(1-t)2P1+3t2(1-t)P2+t3P3  ,0<=t<=1;

二次贝塞尔曲线的实现:

  • 法一:由函数求出对应点,描点画线;
  • 法二:Qt cubicTo()画线;
void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawLine(100,100,100,200);
    painter.drawLine(100,100,200,100);
    QPointF p0(100,200);
    QPointF p1(100,100);
    QPointF p2(200,100);
    QPointF d;
    double i=0;//方法一
    while(i<=1)
    {
        d=(1-i)*(1-i)*p0+2*i*(1-i)*p1+i*i*p2;
        painter.drawPoint(d);
        i+=0.01;
    }

    painter.drawLine(100,300,100,400);
    painter.drawLine(100,400,200,400);
    QPainterPath path;//方法二
    path.moveTo(100,300);
    path.cubicTo(100,400,100,400,200,400);
    painter.drawPath(path);
}
标签: Qt 算法
最后更新:2020-06-06

三味线

不吃咸鱼的喵

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Captcha Code

COPYRIGHT © 2022 voidcat.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备18010095号-1