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=(tt0)/(t1t0)

t = t 0 + ( t 1 − t 0 ) u t=t_0+(t_1-t_0)u t=t0+(t1t0)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实现

12月学习进度4/31——计算机图形学拉格朗日插值的MATLAB实现

西南交通大学计算机图形学期末复习