Android自定义View(四)Path之贝塞尔曲线

本文介绍了贝塞尔曲线的基本概念、公式,并通过Android的Path类中的quadTo方法展示了如何在实际开发中应用二阶贝塞尔曲线,实现手指轨迹画板的平滑过渡和水波纹效果的绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

1、贝赛尔曲线来源

在数学的数值分析领域中,贝赛尔曲线(Bézier曲线)是电脑图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例
贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau算法开发,以稳定数值的方法求出贝塞尔曲线

2、贝塞尔曲线公式

一阶贝塞尔曲线

公式:B(t)=(1 - t)Po + tP1,t∈[0,1]

动画演示为:

 

其中Po表示起点,P1表示终点,t表示时间,B(t)表示计算结果

图中移动的黑色点代表随着时间的增长B(t)的变化规律,其实一阶贝塞尔曲线就是在起点和终点之间随着B的变化而形成一个匀速增长的轨迹,所以说B(t)也是一个匀速增长的值

二阶贝塞尔曲线

公式:B(t)=(1 - t)²Po + 2t(1 - t)P1 + t²P2,t∈[0,1]

在这里Po是起点,P2是终点,P1是控制点,我们给公式做一个分解因式的转换

            B(t)= (1-t)[(1-t)Po + tP1] + t[(1-t)P1 + tP2]

通过分解因式,我们发现其实二阶曲线公式是一阶曲线公式的组合,首先各自取得(Po、P1)和(P1、P2)的一阶曲线值,然后再将两个值作为一阶曲线的起点和终点计算得到B(t)得到整个二阶曲线的值

动画演示:

可以看到二阶贝塞尔曲线会形成一个圆滑的曲线轨迹

下面取动画的其中一帧来分析一下,假设t = 0.25时刻,此时的画面如下:

其中点B为公式的计算结果,上面我们分析过B(t)的生成规律,这里我们直观地解析一下

首先Qo是Po和P1作为一阶曲线的生成结果,Q1是P1和P2作为一阶曲线的生成结果,然后Qo和Q1作为一阶曲线生成的B就是当前二阶曲线的最终结果值。随着时间的变化,就形成了上面的红色轨迹线了

三阶贝塞尔曲线

公式:B(t)= Po(1 - t)^3 + 3P1(1-t&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值