matlab n次贝塞尔曲线
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 定义函数 [x, y] = bezir_n(points, dots)
- 参数介绍
- bezir_n.m 源文件
- 调用函数
- 绘制3次曲线
- 绘制9次贝塞尔曲线
- 100 次贝塞尔曲线
定义函数 [x, y] = bezir_n(points, dots)
贝塞尔曲线由起点,终点,(n-1)个控制点组成。n 表示多项式最高次数。
参数介绍
points
是一个数组,size = [2, n + 1]. 第一行定义为所有点的x坐标,第二行定义为所有点的y坐标。dots
是一个整数,表示这条曲线需要的点的数量。x
,计算出的路径上所有点的x坐标。y
,计算出的路径上所有点的y坐标。
bezir_n.m 源文件
这个函数可以生成任意阶数,任意数量点数的贝塞尔曲线。所有代码 + 注释 + 空白不过36行,可见matlab强大之处。
function [x, y] = bezir_n(points, dots)% points format:% size = [2, n + 1], including starting point & end point.% dots:% generate dots points in the bezir curve.% check points sizen = length(points) - 1;if n < 1x = []; y = [];return;elseif n == 1x = points(1, :);y = points(2, :);return;else% calculate kk = [1 1];for i = 1 : (n - 1)k = conv(k, [1 1]);end% 计算tt = linspace(0, 1, dots);% x, y 由n + 1个多项式之和得到.x = zeros(size(t));y = zeros(size(t));for i = 1 : (n + 1)j = i - 1;ft = (1 - t).^(n - j).*(t.^j);x = x + points(1, i) * k(i) * ft;y = y + points(2, i) * k(i) * ft;endend
end
调用函数
函数的阶数,完全由输入的points
决定,如果有10个点,那么函数就是9次的。
绘制3次曲线
下面代码中,points 第1行是x坐标,第2行是y坐标。
···
points = [
0 0 16 16; …
0 8 8 0 …
];
dots = 100;
[x, y] = bezir_n(points, dots);
plot(x, y, ‘-r’, points(1, : ), points(2, : ), ‘-b’);
···
图中,蓝色是由起点终点和控制点连起来的曲线;红色是绘制的贝塞尔曲线。
2个控制点分别是(0,8), (16, 8).
绘制9次贝塞尔曲线
points = [2, 0, 2, 0, 2, 4, 6, 4, 6, 4; ...-4, -2, 0, 2, 4, 4, 2, 0, -2, -4 ...];dots = 100;
[x, y] = bezir_n(points, dots);
plot(x, y, '-r', points(1, : ), points(2, : ), '-b');
图中,蓝色是由起点终点和控制点连起来的曲线;红色是绘制的贝塞尔曲线。
100 次贝塞尔曲线
这里有101个坐标点,但完全采用随机生成的,因此看上去没什么规律。
points = randi(100, [2, 101]);
dots = 1000;
[x, y] = bezir_n(points, dots);
plot(x, y, '-r', points(1, : ), points(2, : ), '-b');
axis([-1, 101, -1 , 101]);
图中,蓝色是由起点终点和控制点连起来的曲线;红色是绘制的贝塞尔曲线。
matlab n次贝塞尔曲线相关推荐
- matlab 贝塞尔曲线,matlab实现贝塞尔曲线绘图pdf查看
贝塞尔曲线绘图方法: %Program 3.7 Freehand Draw Program Using Bezier Splines %Click in Matlab figure window to ...
- 贝塞尔曲线 三维 拼接 matlab,贝塞尔曲线公式
给出了用 2m-1 次贝塞尔曲线逼 近 2m 次贝塞尔曲线的封闭的计算公式,推广了文献[1]中给出的降一次逼近时 的误差估计公式,并得到了封闭的形式.为 CAD 系统的...... 第9期 机械设计与 ...
- matlab 贝塞尔曲线,基于MATLAB动态实现Bezier曲线几何作图.pdf
基于MATLAB动态实现Bezier曲线几何作图.pdf 2015年 1月 黑龙江生态工程职业学院学报 Jan.2O15 第28卷第 1期 JournalofHeilongjiangVocationa ...
- 贝塞尔曲线(Bezier Curve)原理、公式推导及matlab代码实现
1. 定义 贝塞尔曲线(Bezier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线.一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点, ...
- Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(二)
根据(一)中的理论前提,我们通过matlab进行一次仿真验证: clcclear allp0 = [ 0, 0];p1 = [10,0.5];p2= [20,3.5];p3 = [30,4];%设置控 ...
- 【LVGL笔记】-- 贝塞尔曲线绘制
什么是贝塞尔曲线 贝塞尔曲线(Bézier Curve,也被称为贝塞尔多项式(Bézier Polynomial),是由一系列控制点(Control Point)所定义的一条平滑曲线.Pierre B ...
- 【路径规划】贝塞尔曲线平滑路径
贝塞尔曲线一般是用于二维图形的一种数学曲线,一般是用于一些矢量图的设计,不过在路径规划中,也可以应用上,例如之前的RRT随机搜索算法,因为是随机搜索,因此得到的路径点的曲折度是很大的,除了RRT,在其 ...
- php 贝瑟尔曲线,贝塞尔曲线的应用详解
简介 贝塞尔曲线是可以做出很多复杂的效果来的,比如弹跳球的复杂动画效果,首先加速下降,停止,然后弹起时逐渐减速的效果. 使用贝塞尔曲线常用的两个网址如下: 缓动函数: cubic-bezier: 如何 ...
- 贝塞尔曲线动画demo(仿美人相机效果)
效果如图: 仿美人相机,手势滑动隐藏顶部view.为了方便讲解,将屏幕分为几个区域,如图: 在拖动过程中: 1.拖动距离小于minMoveDistance,贝赛尔曲线发生形变 2.拖动大于minMov ...
- 自定义View合辑(8)-跳跃的小球(贝塞尔曲线)
为了加强对自定义 View 的认知以及开发能力,我计划这段时间陆续来完成几个难度从易到难的自定义 View,并简单的写几篇博客来进行介绍,所有的代码也都会开源,也希望读者能给个 star 哈 GitH ...
最新文章
- $@ 与 $* 差在哪?
- 开源工程师:Ubuntu 应该抛弃 32 位 ISO 镜像
- oracle的cols,Oracle cols_as_rows 比对数据
- VS2008+Windows DDK 7的环境配置(二)
- mac远程连接centos安装mysql_centos安装Mysql并远程连接
- 开源︳Quicksilver for Mac(键盘启动工具)V1.6.1免费版
- iPhone 13将减产1000万部,因特定芯片供应不足
- dex、apk完整性校验
- 咱也过个双 11 !Flink Forward Asia 培训门票买一赠一!
- 深入理解Nginx~优化性能的配置项
- html表格 超链接无效,excel表格超链接失效的解决方法
- 接口自动化测试实践指导(上):接口自动化需要做哪些准备工作
- matlab 双曲线拟合,利用MATLAB进行logistic曲线拟合
- Global Sensing and Measurements Reuse for Image Compressed Sensing
- WCF+SQL Server 2008 明源售楼系统项目解析
- 全局记录RabbitMQ的消费者消息日志
- 零基础入门金融风控-贷款违约预测_Task1
- 2018新版个税计算器---Python实现
- 千里马Android Framework-Binder通信总结流程图
- 不可抗力/(ㄒoㄒ)/~~ 开始学习node全栈<四>express Web框架