如何从等值线生成 3D 曲面?

2023-12-22

我有一组等值线点(或轮廓点),如下所示:

等值线上的每个点都有其各自的 X、Y 和 Z 坐标。由于它们是等值线,这意味着每个点将具有唯一的 X-Y 对,但同一条线上的点将具有相同的 Z 坐标。

现在,是否有任何算法或任何软件包(C# 或 C++ 或 MATLAB 语言)可以用来将等值线点插值到完整的 3-D 表面中?

P/S:我不仅对最终输出感兴趣,我对获取插值表面数据感兴趣,以便我可以自己绘制表面。

编辑:C++ 解决方案也受到欢迎。


在 MATLAB 中,您可以使用以下函数griddata https://www.mathworks.com/help/matlab/ref/griddata.html or the TriScatteredInterp class https://www.mathworks.com/help/matlab/ref/triscatteredinterp.html(注:自 R2013a 起scatteredInterpolant https://www.mathworks.com/help/matlab/ref/scatteredinterpolant-object.html是推荐的替代方案)。这两个都允许您将规则间隔的数据表面拟合到一组非均匀间隔的点(尽管看起来griddata在较新的 MATLAB 版本中不再推荐)。下面介绍了如何使用它们:

  • griddata:

    [XI,YI,ZI] = griddata(x,y,z,XI,YI)
    

    where x,y,z每个表示每个点(在本例中为等高线上的点)的笛卡尔坐标向量。行向量XI和列向量YI是笛卡尔坐标griddata对值进行插值ZI的安装表面。为矩阵返回的新值XI,YI与通过的结果相同XI,YI to meshgrid https://www.mathworks.com/help/matlab/ref/meshgrid.html创建统一的点网格。

  • TriScatteredInterp class:

    [XI,YI] = meshgrid(...);
    F = TriScatteredInterp(x(:),y(:),z(:));
    ZI = F(XI,YI);
    

    where x,y,z再次表示每个点的笛卡尔坐标向量,只是这次我使用了结肠重塑手术 https://www.mathworks.com/help/matlab/ref/colon.html (:)以确保每个都是列向量(所需的格式为TriScatteredInterp)。插值法F然后使用矩阵进行评估XI,YI您必须使用创建meshgrid.

示例与比较

下面是一些示例代码及其生成的结果图,用于使用上述两种方法从轮廓数据重建表面。轮廓数据是用contour https://www.mathworks.com/help/matlab/ref/contour.html功能:

% First plot:

subplot(2,2,1);
[X,Y,Z] = peaks;  % Create a surface
surf(X,Y,Z);
axis([-3 3 -3 3 -8 9]);
title('Original');

% Second plot:

subplot(2,2,2);
[C,h] = contour(X,Y,Z);  % Create the contours
title('Contour map');

% Format the coordinate data for the contours:

Xc = [];
Yc = [];
Zc = [];
index = 1;
while index < size(C,2)
  Xc = [Xc C(1,(index+1):(index+C(2,index)))];
  Yc = [Yc C(2,(index+1):(index+C(2,index)))];
  Zc = [Zc C(1,index).*ones(1,C(2,index))];
  index = index+1+C(2,index);
end

% Third plot:

subplot(2,2,3);
[XI,YI] = meshgrid(linspace(-3,3,21));  % Generate a uniform grid
ZI = griddata(Xc,Yc,Zc,XI,YI);          % Interpolate surface
surf(XI,YI,ZI);
axis([-3 3 -3 3 -8 9]);
title('GRIDDATA reconstruction');

% Fourth plot:

subplot(2,2,4);
F = TriScatteredInterp(Xc(:),Yc(:),Zc(:));  % Generate interpolant
ZIF = F(XI,YI);                             % Evaluate interpolant
surf(XI,YI,ZIF);
axis([-3 3 -3 3 -8 9]);
title('TriScatteredInterp reconstruction');

请注意,两个结果之间几乎没有差异(至少在这个范围内)。另请注意,由于这些点处轮廓数据的稀疏性,插值曲面在拐角附近有空白区域。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从等值线生成 3D 曲面? 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 按成员序列化

    我已经实现了template
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 重载<<的返回值

    include
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le

随机推荐

  • DBI SQL Server ODBC 连接中返回的数据库对象缺少字母

    不幸的是 如果不将机密信用信息共享到我遇到问题的数据库 我将无法为该问题创建良好的重现 希望下面有足够的信息来标记 ODBC 专家能够理解的任何明显问题 背景 我正在运行具有以下规格的 MacBook Pro Model Name MacB
  • 具有特定长度的 React.PropTypes 数组

    是否可以使用React PropTypes强制数组的长度 这是一个非常简单的案例 const TWO NUMBERS PropTypes array i need this to be an array of two numbers 我知道
  • 使用 Scala 的 Neo4j OGM 示例

    我尝试了 Luanne 文章中提到的例子Spring Data Neo4j 4 的本质 https www airpair com neo4j posts the essence of spring data neo4j 4在斯卡拉 该代码
  • Eclipse WTP / m2eclipse - 既不能清理也不能发布到 tomcat

    我正在 Ubuntu 11 10 64 位上的 Eclipse Indigo Java EE 大量使用 m2eclipse 中开发一个相当复杂的项目 Java Spring Maven 多模块 并带有 WAR 覆盖 直到今天早上一切都很好
  • Java哈希表具有单独的链接冲突解决方案?

    我已经使用内置的 java util hashtable 创建了一个程序 但现在我需要使用单独的链接来解决冲突 哈希表的这种实现是否可能 是否已经实现了使用单独链接的方法 看着source http www javakey net sour
  • Xcode 9.x 行复制和删除

    直到 Xcode 8 0 为止 都可以自定义 IDETextKeyBindingSet plist 文件 然而 现在看来修改此文件会导致 Xcode 停止正常运行 例如箭头键停止工作 并且似乎不再可能创建自己的快捷键 Xcode 从来没有行
  • 在 iOS 逻辑测试中使用 CocoaPods 时找不到库

    我正在尝试针对项目中的类编写一些 iOS 逻辑测试 这些类使用 podspec 中某些库的功能 我正在使用 Xcode 中提供的标准单元测试包 尽管不是应用程序测试 只是单元测试 例如 我使用 Magical Record 并且在我的 po
  • iPhone:将imageView设置在图像的透明部分

    我正在制作一个应用程序 其中用户将被允许首先选择一个相框 然后他 她必须从图库中为该相框选择 2 张照片 相框是一个包含两个透明孔的图像 其中我们有设置所选照片 他 她可以根据它们裁剪这些图像 在他 她完成裁剪后 将使用所选相框打开一个新视
  • 多线程编程C++[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • gcc 是否使用 Intel 的 SSE 4.2 指令进行文本处理(如果可用)?

    I read here https ieeexplore ieee org document 5762731英特尔推出的SSE 4 2 instructions用于加速字符串处理 引用文章中的内容 SSE 4 2指令集首先在Intel的Co
  • 在 Oracle 11g 中创建触发器时出现问题

    我在尝试使用 SQL Developer 在 Oracle 11g 数据库中创建触发器时遇到奇怪的错误 这是我所做的 我的桌子 CREATE TABLE COUNTRY CODE ID NUMBER 19 0 PRIMARY KEY NOT
  • 使用 FB Graph API 为特定页面创建 Facebook 事件

    我需要将 CMS 中的事件同步到 Facebook 特定页面 我正在尝试为我创建的页面创建一个事件 但仍然没有结果 我可以简单地创建与用户相关的事件 但与页面无关 代码使用Facebook PHP SDK http github com f
  • 当用户开始在 UITableView 上滚动时使用 alpha 隐藏 UIView?

    viewController由2个主要视图组成 容器视图和表视图 容器视图位于顶部 包含所有标签 例如日期和分数 我希望当用户开始滚动表视图的日期时隐藏此容器视图 到目前为止我有 连接了一个IBOutlet对于这个容器视图 这样我就可以在代
  • Django管理站点自定义search_fields查询

    在 django 管理中 您可以设置 ModelAdmin 的 search fields 以便能够搜索那里给出的属性 我的模型类有一个不是真正模型属性的属性 这意味着它不在数据库表中 该属性与另一个数据库表相关 该数据库表未通过关系与当前
  • ASP.NET 隐藏字段在回发后不更新

    我的 ASP 页面上有一些代码 如下所示
  • org.postgresql.util.PSQLException:错误:列 user0_.id 不存在 - Hibernate

    我有一个使用 hibernate 映射到 postgres 数据库的模型类 我的模型类是 Entity Table name USER public class User Id GeneratedValue Column name id p
  • 我怎样才能给这个CSS一个内边框?

    我试图给 page div 一个内部边框 该边框与顶部周围的灰色边框一致 http www designated net au testbed testpage http www designated net au testbed test
  • 是否有必要使用准备好的语句? [复制]

    这个问题在这里已经有答案了 准备好的语句添加了大量的代码 但我不断听到有人提到使用它们 从 1 行代码增加到大约 6 行代码会增加什么价值 这只是为了防止 SQL 注入吗 php net 关于准备好的语句here http php net
  • onAccessibilityEvent(AccessibilityEvent event) 不拦截通知

    在我的应用程序中 我必须捕获新传入的电子邮件通知并在屏幕上播放描述该事件的视频 我正在使用onAccessibilityEvent AccessibilityEvent event 收听生成的通知 我还使用以下代码来初始化我的 Access
  • 如何从等值线生成 3D 曲面?

    我有一组等值线点 或轮廓点 如下所示 等值线上的每个点都有其各自的 X Y 和 Z 坐标 由于它们是等值线 这意味着每个点将具有唯一的 X Y 对 但同一条线上的点将具有相同的 Z 坐标 现在 是否有任何算法或任何软件包 C 或 C 或 M