gpt4 book ai didi

embedded - 计算样条曲面上的点

转载 作者:行者123 更新时间:2023-12-02 21:57:51 27 4
gpt4 key购买 nike

我正在研究一种在嵌入式系统上运行的控制算法。我的编程语言是 C,系统在内存和处理能力方面受到相当严格的限制。

我在三维空间中有一些(大约 10 个)引用点。这些通常是静态的,但偶尔会发生变化。我想拟合一个样条曲面,以便它通过所有这些点,然后有一个函数,对于给定的输入向量 (x, z) 返回距离 y> 从平面 y = 0

我认为这是一个需要分两部分解决的问题:1)每当引用点发生变化时就会计算一些新的系数,2)将系数插入到返回y 对于给定的(x, z)。 (只有 2 个需要“实时”发生。)

我在网上对此进行了一些研究,但我在数学方面遇到了困难,而且很多 Material 都是特定于计算机图形学的。我什至不确定我需要什么类型的样条线; NURBS 和 Catmull-Rom 似乎都相关。最后,关于样条线边缘的形状:由于我的输入向量来自有界的传感器读数,因此我并不真正关心样条线在该边界之外的作用。

如果您能提供一些帮助或指向相关 Material 的指示,我将非常感激,并且任何伪代码片段都将不胜感激。

最佳答案

如果你能以某种方式生成 Bézier triangles每当你的引用点改变时,即使微 Controller 的资源有限,这些三角形的光滑表面也很容易计算——它只需要重复加法和除以二。

生成穿过所有点的贝塞尔三角形的一种方法是使用 Delaunay triangulation在你的引用点上找到一堆覆盖你表面的三角形。然后使用这些三角形的角作为贝塞尔三角形的角,并任意选取控制点,使相邻三角形之间的边缘“平滑”(而不是“有折痕”)。

选择这些控制点的一种可能方法:

对于每个三角形角点(即每个原始引用点):

  • 找到一端位于该角点的所有三角形边
  • 找到与该角点(在这些边的另一端)“连接”的所有点
  • 拟合一个穿过该角点的平面,并且最小均方法“靠近”连接点
  • 对于每条边,选取一个距给定角点 1/4(或 1/3 或 1/10 或其他)的点,朝向连接的角点。在找到平面上距离该点最近的点后,忘记该点。使用结果点作为与该边缘接壤的两个三角形中的控制点之一。

这给出了每个贝塞尔三角形除一个控制点之外的所有控制点。对于贝塞尔三角形的剩余中心控制点,也许最简单的是使用角点的几何平均(质心)。

关于embedded - 计算样条曲面上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5742811/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com