贝塞尔曲线原理和android相关API接口
2015-09-19 11:43
357 查看
什么叫贝赛尔曲线?其实很简单,使用三个或多个点来确定的一条曲线,贝塞尔曲线在图形图像学中有相当重要的地位,Path中也提供了一些方法来给我们模拟低阶贝赛尔曲线。
例如 五阶贝塞尔曲线:
贝塞尔曲线的定义也比较简单,你只需要一个起点、一个终点和至少零个控制点则可定义一个贝赛尔曲线,当控制点为零时,只有起点和终点,此时的曲线说白了就是一条线段,我们称之为一阶贝赛尔曲线。
公式:B(t) = ( 1 - t ) * P0 + t * P1;
推导二阶公式:P0,P1,P2控制的曲线
Bp0p1 = ( 1 - t ) * P0 + t * P1;
Bp1p2 = ( 1 - t ) * P1 + t * P2;
Bp0p1p2 = ( 1 - t ) * Bp0p1 + t * Bp1p2
= ( 1 - t ) * { ( 1 - t ) * P0 + t * P1 } + t * { ( 1 - t ) * P1 + t * P2 }
= ( 1 - t ) * ( 1 - t ) * P0 + 2 * t * ( 1 - t ) * P1 + t * t * P2
同样的,Path中也提供了三阶贝塞尔曲线的方法cubicTo,按照上面我们的推论,三阶应该是有两个控制点
android绘制“二阶”贝赛尔曲线
其中quadTo的前两个参数为控制点的坐标,后两个参数为终点坐标,至于起点默认是画布的左上角。这里的p0就是起点,(x1,y1)就是中点P1,(x2,y2)就是末端点P2
android绘制三阶贝赛尔曲线
与quadTo类似,前四个参数表示两个控制点,最后两个参数表示终点。其实,(x1,y1)就是P1,(x2,y2)是P2,(x3,y3)是P3。
参考资料:
http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0309/2573.html
例如 五阶贝塞尔曲线:
贝塞尔曲线的定义也比较简单,你只需要一个起点、一个终点和至少零个控制点则可定义一个贝赛尔曲线,当控制点为零时,只有起点和终点,此时的曲线说白了就是一条线段,我们称之为一阶贝赛尔曲线。
公式:B(t) = ( 1 - t ) * P0 + t * P1;
推导二阶公式:P0,P1,P2控制的曲线
Bp0p1 = ( 1 - t ) * P0 + t * P1;
Bp1p2 = ( 1 - t ) * P1 + t * P2;
Bp0p1p2 = ( 1 - t ) * Bp0p1 + t * Bp1p2
= ( 1 - t ) * { ( 1 - t ) * P0 + t * P1 } + t * { ( 1 - t ) * P1 + t * P2 }
= ( 1 - t ) * ( 1 - t ) * P0 + 2 * t * ( 1 - t ) * P1 + t * t * P2
同样的,Path中也提供了三阶贝塞尔曲线的方法cubicTo,按照上面我们的推论,三阶应该是有两个控制点
android绘制“二阶”贝赛尔曲线
quadTo(float x1, float y1, float x2, float y2)
其中quadTo的前两个参数为控制点的坐标,后两个参数为终点坐标,至于起点默认是画布的左上角。这里的p0就是起点,(x1,y1)就是中点P1,(x2,y2)就是末端点P2
// 实例化路径 mPath = new Path(); // 移动起点至[100,100] mPath.moveTo(100, 100); // 连接路径到点 mPath.quadTo(200, 200, 300, 100);
android绘制三阶贝赛尔曲线
cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)
与quadTo类似,前四个参数表示两个控制点,最后两个参数表示终点。其实,(x1,y1)就是P1,(x2,y2)是P2,(x3,y3)是P3。
// 实例化路径 mPath = new Path(); // 移动起点至[100,100] mPath.moveTo(100, 100); // 连接路径到点 mPath.cubicTo(200, 200, 300, 0, 400, 100);
参考资料:
http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0309/2573.html
相关文章推荐
- Android学习简单总结
- android 蓝牙权限问题
- Android短信发送器实现方法
- Android input 输入系统学习
- android5.0源码开发之自定义低电量警告AlertDialog
- Android动画效果translate、scale、alpha、rotate详解
- Android Studio常用设置和快捷键
- Android电话拨号器实现方法
- Android服务器主动推送之百度云推送
- Android学习系列(二): 保存文件到手机内存-模拟用户登录保存用户信息
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件
- Android五大布局
- Android任意处代码跳转固定activity 的思路
- Android Api Demos登顶之路(七十三)Graphics-->Compass
- android studio 加载jpush出现的问题:java.lang.UnsatisfiedLinkError:
- Android添加权限大收集
- Android 动画之二 View Animation —— 补间(Tween)动画与Interpolator的介绍
- Android Studio 快捷键整理分享
- 【MDCC技术大咖秀】Android内存优化之OOM
- android message