计算机图形学中的曲线问题——拉格朗日插值曲线绘制实践
创始人
2024-03-16 05:33:46
0

拉格朗日插值曲线的绘制

限于篇幅,我们将在这篇文章中介绍拉格朗日插值曲线绘制实践,主文章链接:

GGN_2015
计算机图形学中的曲线问题

在主文章中我们已经介绍了拉格朗日插值函数的绘制方法。给定一个函数必须通过的点的集合,保证任意两点 xxx 指不同,我们就能构造出一条拉格朗日插值函数。但是函数图象作为一种特殊的曲线,有着很多的我们不想要的约束,例如:

  1. 函数曲线上每个 xxx 至多只有一个 yyy 与之对应;
  2. 函数难以描述斜率不存在的位置;

因此,假如我们先要描述一条在平面甚至空间中任意“蜿蜒”的曲线,我们需要使用参数方程的方式。我们可以把平面上的参数方程理解成一个从 R\RR 映射到 R2\R^2R2 的映射,每一个自变量 ttt 对应着参数方程中的一个点对 (Xt,Yt)(X_t, Y_t)(Xt​,Yt​)。

拉格朗日插值曲线的表示

假设我们希望我们的曲线能够依次通过 P1(x1,y1),P2(x2,y2),⋯,Pn(xn,yn)P_1(x_1, y_1), P_2(x_2, y_2), \cdots, P_n(x_n, y_n)P1​(x1​,y1​),P2​(x2​,y2​),⋯,Pn​(xn​,yn​),那么我们不妨定义一个这样的参数方程:
M(t)=P1⋅f1(t)+P2⋅f2(t)⋯+Pn⋅fn(t),t∈[1,n](1)M(t)=P_1\cdot f_1(t)+P_2\cdot f_2(t)\cdots +P_n\cdot f_n(t), t\in[1, n] \tag{1} M(t)=P1​⋅f1​(t)+P2​⋅f2​(t)⋯+Pn​⋅fn​(t),t∈[1,n](1)

其中 fif_ifi​ 的是一个在 x=ix=ix=i 处取值为 111,在 x∈{1,2,⋯,n}且x≠ix\in\{1, 2, \cdots, n\} 且 x\neq ix∈{1,2,⋯,n}且x​=i 时 fi(x)=0f_i(x)=0fi​(x)=0,这种函数的构造方法在主文章中介绍过,在此不再赘述。(1)(1)(1) 式中,我们将 PiP_iPi​ 与 fi(t)f_i(t)fi​(t) 依次对应相乘,这里的点 ‘⋅\cdot⋅’ 表示数乘向量,其中 PiP_iPi​ 是二维空间的点坐标,也就是一个二维向量,fi(t)∈Rf_i(t)\in \Rfi​(t)∈R 是一个实数。最终我们得到的 M(t)∈R2M(t)\in \R^2M(t)∈R2 是一个二维向量,我们把它视为平面中的一个动点,这个动点的轨迹就是我们的插值曲线。

根据我们之前对一般的拉格朗日插值函数的介绍,我们可以得知:
M(1)=P1⋅1+P2⋅0⋯+Pn⋅0=P1M(2)=P1⋅0+P2⋅1⋯+Pn⋅0=P2⋮M(n)=P1⋅0+P2⋅0⋯+Pn⋅1=PnM(1)=P_1\cdot 1+P_2\cdot 0\cdots +P_n\cdot0=P_1\\ M(2)=P_1\cdot 0+P_2\cdot 1\cdots +P_n\cdot0=P_2\\ \vdots\\ M(n)=P_1\cdot 0+P_2\cdot 0\cdots +P_n\cdot1=P_n\\ M(1)=P1​⋅1+P2​⋅0⋯+Pn​⋅0=P1​M(2)=P1​⋅0+P2​⋅1⋯+Pn​⋅0=P2​⋮M(n)=P1​⋅0+P2​⋅0⋯+Pn​⋅1=Pn​

换言之,当 ttt 从 111 变化到 nnn 的过程中参数方程曲线 M(t)M(t)M(t) 能够依次通过 P1,P2,⋯,PnP_1, P_2, \cdots, P_nP1​,P2​,⋯,Pn​ 中的每一个点。下面给出了一个包含五个结点的拉格朗日插值函数的示例:

插值曲线
我们会看到,上图中红色的曲线确实忠实地穿过了 P1,P2,⋯,P5P_1, P_2, \cdots, P_5P1​,P2​,⋯,P5​ 这五个控制点,但是当我们改变其中一个点的坐标时,整条曲线都扭得很厉害,而这也正是插值曲线不适合做工业设计的原因。在大多数时刻我们都不仅需要曲线经过一些指定的定点,还希望曲线能在控制点变化时尽可能保持一个较为稳定的形态,否则我们将很难实现对曲线形状的自由控制。

但拉格朗日插值曲线也有它的优势,一方面他是插值曲线,能够通过指定的所有控制点,而拟合曲线只能近似通过某些控制点。另一方面就是拉格朗日插值曲线无穷阶可导连续,而这一点是一般的分段函数很难实现的。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...