12月学习进度5/31——计算机图形学期末准备02规范化两点三次Hermite插值及MATLAB实现
Posted fu_GAGA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12月学习进度5/31——计算机图形学期末准备02规范化两点三次Hermite插值及MATLAB实现相关的知识,希望对你有一定的参考价值。
规范化三次Hermite插值
将 [ t 0 , t 1 ] [t_0,t_1] [t0,t1] 区间规范化到 [ 0 , 1 ] [0,1] [0,1] 区间
u = ( t − t 0 ) / ( t 1 − t 0 ) u = (t-t_0)/(t_1-t_0) u=(t−t0)/(t1−t0)
则 t = t 0 + ( t 1 − t 0 ) u t=t_0+(t_1-t_0)u t=t0+(t1−t0)u ,将该式代入到四个基函数中,求得新的以 u u u 为变量的基函数形式
可以将计算简化为矩阵乘积形式
例题
MATLAB实现
function [x,y] = Hermite(x1,y1,x2,y2,f1,f2,u)
%input : (x1,y1) (x2,y2)给的两个点
% f1:在x1点处的导数
% f2:在x2点处的导数
%output: x为插值得到的横坐标
% y为插值得到的纵坐标
n = length(u);
y = zeros(1,n);
A = [2 -2 1 1;-3 3 -2 -1;0 0 1 0;1 0 0 0];
F = [x1 y1;x2 y2;f1(1) f1(2);f2(1) f2(2)];
for i = 1:n
res = [u(i)^3 u(i)^2 u(i) 1]*A*F;
x(i) = res(1);
y(i) = res(2);
end
end
调用实现上述例题:
%两点三次hermite插值
xx = [0:0.01:1];
[x,y] = Hermite(1,1,4,2,[1,1],[1,-1],xx);
plot(x,y);
结果:
以上是关于12月学习进度5/31——计算机图形学期末准备02规范化两点三次Hermite插值及MATLAB实现的主要内容,如果未能解决你的问题,请参考以下文章
12月学习进度3/31—计算机图形学期末准备01拉格朗日插值 + 三次Hermite插值
12月学习进度7/31——计算机图形学期末准备04B样条曲线及其基函数的定义
12月学习进度8/31——计算机图形学期末准备05B样条曲线和基函数的性质
12月学习进度9/31——计算机图形学期末准备06四阶三次B样条曲线矩阵形式推导及MATLAB实现