Box3Settings库
    Box3Settings库
    • 基本介绍
    • 贝塞尔曲线(Bezier Curve)原理、公式推导
    • Box3视角综合示范【以Boss出现为例】
    • 基本代码关系
    • BasicCamera父类
    • Box3CameraMoves
    • Box3HighBessel
    • Box3Bessel
    • Box3CameraLag
    • Box3RelativeSkeleton
    • Utils工具类
    • SHA1Tool哈希加密类
    • Box3SkeletonSettings完整类代码
    • Box3CameraSettings完整类代码

    贝塞尔曲线(Bezier Curve)原理、公式推导

    贝塞尔简介#

    贝塞尔曲线(Bezier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。

    曲线的一些特性:#

    使用n个控制点{P1​,P2​,...,Pn​}来控制曲线的形状
    曲线经过起点P1​和终点Pn​,但不经过中间点P2​ Pn−1​
    step1:在二维平面内选三个不同的点并依次用线段连接
    20200304121524159.png
    step2:在线段AB和BC上找到D、E两个点,使得DBAD​=ECBE​
    20200304121603117.png
    Step3: 连接DE,并在DE上找到F点,使其满足FEDF​=DBAD​=ECBE​(抛物线的三切线定理)
    20200304121643412.png
    Step4.找出符合上述条件的所有点
    20200304113229429.gif
    上述为一个二阶贝塞尔曲线。同样的,也有n阶贝塞尔曲线
    阶数图示
    一阶20200304113656535.gif
    三阶20200304113511298.gif
    四阶20200304113852783.gif
    五阶20200304113741561.gif

    公式推导#

    一次贝塞尔曲线(线性公式)#

    定义:给定点,P0​,P1​,线性贝塞尔曲线只是一条两点之间的直线,这条线由下式给出,且其等同于线性插值:
    B(t)=P0​+(P1​−P0​)t=(1−t)P0​+tP1​,t∈[0,1]
    其中,公式中的 P0​,P1​,同步表示为横或纵坐标。
    20200304113656535.gif
    假设P0​坐标为(a,b),P1​的坐标为(c,d),P2​的坐标为(x,y),则有
    c−xx−a​=1−tt​⇒x=(1−t)a+tc
    同理,有:
    d−yy−b​=1−tt​⇒y=(1−t)b+td
    于是可简写为:
    B(t)=(1−t)P0​+tP1​,t∈[0,1]

    二次贝塞尔曲线(二次方公式)#

    定义:二次贝塞尔曲线的路径由给定点P0​,P1​,P2​的函数B(t)给出:
    B(t)=(1−t)2P0​+2t(1−t)P1​+t2P2​,t∈[0,1]
    20200304113229429.gif
    假设P0​P1​上的点为A,P1​P2​上的点为B,AB上的点为C(也即C为曲线上的点)。则根据一次贝塞尔曲线公式有:
    A=(1−t)P0​+tP1​
    B=(1−t)P1​+tP2​
    C=(1−t)A+tB
    将上式中的A、B带入C中,即可得到二次贝塞尔曲线的公式:
    B(t)=(1−t)2P0​+2t(1−t)P1​+t2P2​,t∈[0,1]

    二次贝塞尔曲线(三次方公式)#

    同理可得三次贝塞尔曲线公式:
    B(t)=(1−t)3P0​+3t(1−t)2P1​+3t2(1−t)P2​+t3P3​,t∈[0,1]

    n次贝塞尔曲线(一般参数公式)#

    定义:给定点P0​,P1​,...,Pn​,则n次贝塞尔曲线由下式给出:
    B(t)=i=0∑n​(in​)Pi​(1−t)n−iti=(0n​)P0​(1−t)nt0+(1n​)P1​(1−t)n−1t1+...+(n−1n​)Pn−1​(1−t)n−1tn−1+(nn​)Pn​(1−t)ntn,t∈[0,1]
    n次贝塞尔曲线可由如下递归表达:
    P0n​=(1−t)P0n−1​+tP1n−1​,t∈[0,1]
    ————————————————
    版权声明:本文为CSDN博主「beijing_txr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/sinat_35676815/article/details/120884682
    修改于 2023-03-06 04:09:00
    上一页
    基本介绍
    下一页
    Box3视角综合示范【以Boss出现为例】
    Built with