-
大小: 3KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-06-02
- 语言: Matlab
- 标签:
资源简介
对多个点组成的数组进行插值拟合,在折点处得到光滑的曲线
代码片段和文件信息
% B样条曲线生成程序
% 说明:给定8个控制顶点{(3 5)(2 4)(3 2)(6 1)(5 8)(10 6)(8 1)(6 0)}
%load c;x=800:25:1800;
%a(1:)=x;a(2:)=c;
clc;clear;close all;
% 选取17个控制点,第一行为行,第二行为列
a=[10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90;
20 16 26 26 26 26 24 24 24 22 22 16 28 26 26 26 24]; % 控制顶点数组
%a=[4 3 2 3 6 5 10 8 6 4;6 5 4 2 1 8 6 1 0 -1];%增加两个控制顶点(4 6)(4 -1)从而使曲线通过原来的首末点
plot(a(1:)a(2:)); % 绘制控制多边形
hold on; % 默认为hold off,此命令用来保留控制多边形的图形;
% 生成三次B样条函数
% 由于4个顶点可以确定一条B样条,共有17个控制顶点,可确定17-3=14条B样条曲线
for i=1:14
for u=0:0.001:1; % 参数u[01]之间
% 生成样条基函数
b0=1/6*(-u^3+3*u^2-3*u+1); % 基函数b0;
b1=1/6*(3*u^3-6*u^2+4); % 基函数b1;
b2=1/6*(-3*u^3+3*u^2+3*u+1); % 基函数b2;
b3=1/6*u^3; % 基函数b3;
% 曲线拟合
x=b0*a(1i)+b1*a(1i+1)+b2*a(1i+2)+b3*a(1i+3); % 确定曲线的横坐标x;
y=b0*a(2i)+b1*a(2i+1)+b2*a(2i+2)+b3*a(2i+3); % 确定曲线的纵坐标y;
line(xy‘Color‘‘r‘‘Linestyle‘‘--‘); % 绘制曲线坐标点;
end
end
% hold off;
% 生成二次B样条函数
% n=2;17对控制点,可以确定17-2=15条B样条曲线
for i=1:15
for t=0:0.001:1; % 参数u[01]之间
% 生成样条基函数
g0=1/2*(t-1)^2; % 基函数g0;
g1=1/2*(-2*t^2+2*t+1); % 基函数g1;
g2=1/2*t^2; % 基函数g2;
% 曲线拟合
x=g0*a(1i)+g1*a(1i+1)+g2*a(1i+2); % 确定曲线的横坐标x;
y=g0*a(2i)+g1*a(2i+1)+g2*a(2i+2); % 确定曲线的纵坐标y;
line(xy‘Color‘‘g‘‘Linestyle‘‘:‘); % 绘制曲线坐标点;
end
end
hold off;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1776 2012-12-22 13:36 2次B样条曲线和3次B样条曲线的matlab绘制,适用于初学者\TestBSpline.m
目录 0 2018-05-21 10:27 2次B样条曲线和3次B样条曲线的matlab绘制,适用于初学者\基础B-Spline\
文件 1776 2012-12-22 13:36 2次B样条曲线和3次B样条曲线的matlab绘制,适用于初学者\基础B-Spline\TestBSpline.m
目录 0 2018-05-21 10:27 2次B样条曲线和3次B样条曲线的matlab绘制,适用于初学者\
评论
共有 条评论