使用 R 中的 3d Delaunay 三角面板绘制球体表面

2023-12-02

[EDIT:更通用的解决方案可以在答案中看到这个问题]

我想知道是否有人可以帮助我使用 XYZ 坐标绘制球体表面的近似值。我尝试使用该包计算 Delaunay 三角面板geometry然后用rgl。第一次尝试看起来不错,但不幸的是创建了穿过球体的 Delaunay 3d 三角形。我最终只想绘制表面:

生成球体的 3d xyz 数据

n <- 10 
rho <- 1
theta <- seq(0, 2*pi,, n) # azimuthal coordinate running from 0 to 2*pi 
phi <- seq(0, pi,, n) # polar coordinate running from 0 to pi (colatitude)
grd <- expand.grid(theta=theta, phi=phi)

x <- rho * cos(grd$theta) * sin(grd$phi)
y <- rho * sin(grd$theta) * sin(grd$phi)
z <- rho * cos(grd$phi)
xyzw <- cbind(x,y,z,w=1)

计算 3d Delaunay 三角形并用 rgl 绘图:

#install.packages("geometry")
library(geometry)
library(rgl)

tc <- delaunayn(xyzw[,1:3])
open3d()
tetramesh(tc,cbind(x,y,z), alpha=0.2, col=5)
rgl.snapshot("3d_delaunay.png")

enter image description here

尝试通过 2d Delaunay 三角剖分仅返回表面三角形

tc <- delaunayn(xyzw[,c(1:2)])
open3d()
for(i in seq(nrow(tc))){
    vertices <- c(t(xyzw[tc[i,],]))
    indices <- c( 1, 2, 3)
    shade3d( tmesh3d(vertices,indices) , alpha=0.2, col="cyan")
}
rgl.snapshot("2d_delaunay.png")

enter image description here

显然,有些东西不起作用。任何帮助将不胜感激。


您需要的是凸包,而不是 Delaunay 三角剖分。这是一种方法cxhull包,但您也可以使用geometry包裹。

library(tessellation)

n <- 10
rho <- 1
theta <- seq(0, 2*pi, length.out = n) # azimuthal coordinate running from 0 to 2*pi
phi <- seq(0, pi, length.out = n) # polar coordinate running from 0 to pi (colatitude)
grd <- expand.grid(theta=theta, phi=phi)

x <- rho * cos(grd$theta) * sin(grd$phi)
y <- rho * sin(grd$theta) * sin(grd$phi)
z <- rho * cos(grd$phi)
xyz <- cbind(x,y,z)


library(cxhull)
hull <- cxhull(xyz, triangulate = TRUE)

library(rgl)
open3d()
for(facet in hull$facets){
  triangles3d(xyz[facet[["vertices"]], ], color = "green")
}

enter image description here

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

使用 R 中的 3d Delaunay 三角面板绘制球体表面 的相关文章

随机推荐

  • LINQDataSource - 查询多个表?

    我有一个数据库 并且创建了一个 DBML Linq to SQL 文件来表示该数据库 我创建了一个新的 aspx 页面 并在其上放置了 linqdatasource 和 formview 控件 当我配置 linqdatasource 时 它
  • 在代码隐藏的 asp:image 中显示数据表中的图像

    我有一个数据表 它是从 1 行选择语句的结果集中填充的 通过 SQL Server 2008 中的存储过程 它包含一个Image我在其中存储图像的键入列 我有一个asp image在 aspx 页面上进行控件 我想将图像设置为该数据表的相应
  • 如何使用陀螺仪从加速度计仅获取线性加速度?

    我的房间地板上有一辆小型遥控车 为了简单起见 我们假设它沿着 x 轴移动 现在 地板看起来很平坦 但每个表面都有非常微小的凹凸不平 因此 每当汽车不完全平坦时 因为它处于起始位置 或者换句话说 每当汽车有哪怕是最轻微的倾斜时 从加速度计获得
  • 多选列表框

    我的表单上有一个列表框 它可以很好地满足我想要做的事情 我想要编辑表单上的项目 这意味着填充列表框 然后选择相关项目 我的列表框包含项目尺寸列表 我想选择属于正在编辑的项目的尺寸 请有人给我一些指点 I tried me lstItemSi
  • 拟合 RNN LSTM 模型时出错

    我正在尝试使用以下代码创建用于二元分类的 RNN LSTM 模型 alldataset np loadtxt FinalKNEEALL txt delimiter num classes 2 num of sam alldataset sh
  • Spring 捕获index.html 的所有路由

    我正在为基于react的单页应用程序开发一个spring后端 其中我使用react router进行客户端路由 除了index html页面之外 后端还提供路径上的数据 api 为了提供我的index htmlsrc main resour
  • 如何处理 UWP 按下的后退按钮

    我曾经在 Windows Phone 8 1 XAML 中使用硬件按钮 API 但是 在 UWP 中 某些设备没有后退按钮 如何适应新的应用模式 稍微解释一下答案 你可以使用系统导航管理器 of Windows UI Core名称空间 对于
  • .NET Core 3.1 Web 应用程序与 React - 如何防止基于 Active Directory 组的访问

    我有一个 NET Core 3 1 Web 应用程序 其中包含使用 Windows 身份验证的 React 当用户输入他们的 Active Directory 凭据时 我想在允许访问 React 应用程序之前验证他们属于特定的 Active
  • ember.js 中的多个动态段

    我目前的路线定义如下 App Router map function this resource players path page id function this resource player path player id 我的想法是
  • 记录用户登录,以便报告客户端超出许可证数量

    我是商业 Windows 应用程序 c 的首席开发人员 一项新要求是跟踪滥用许可证的客户 例如 假设客户购买了 10 个用户许可协议 即在任何给定时间有 10 个并发用户 我需要能够在回顾历史记录时报告客户同时登录的用户数超过 10 的情况
  • 用户输入到二维数组中

    我对 C 完全陌生 我想要简单的代码来根据用户输入创建矩阵 E G int matrix1 new int 2 2 now using input i d like to add integers into the array matrix
  • 创建一个构建过程模板,该模板除了将所有文件复制到另一个目录外什么也不做

    我想在 TFS 2012 Express 中创建一个构建定义 它将简单地将项目源树中的所有文件复制到驱动器上的另一个文件夹中 只是强调 我不希望构建输出转到另一个目录 我希望源文件本身 原因是我让 IIS 指向特定文件夹 并且我希望构建将最
  • 在 django-webodt 中使用可变图像

    有人使用吗django webodt 浏览文档 我找不到有关在文档中使用图像的任何内容 我想在 ODT 文档中插入 可变 图像 ImageField 这可能吗 我正在使用 OpenOffice 后端 我不知道这是否适合你 我使用pod在我的
  • Rust 中 Result 中的“T”代表什么?

    官方文档做了很多参考T enum Result
  • 无法使用 Express 发布 / 错误

    我正在尝试使用express 创建一个简单的表单处理程序 我为我的表单尝试了以下代码
  • C/C++ 中的整数除法会遇到精度损失问题吗?

    假设我们有三个整数 int long long long unsigned int 等 变量a b c 通常情况下 执行 c a b 将导致分数截断 但是 c 有可能得到错误的值吗 我不是在谈论 a b 可能超出范围c s type 相反
  • 从 Parse 查询 GeoPoint 并将其作为 MKAnnotation 添加到 MapKit?

    我正在尝试查询存储在 Parse 后端的 PFGeoPoints 数组 我在 Parse 中有一个名为 Post 的 PFObject 并为其分配了 位置 标题 消息 等数据 从我的应用程序发布后 所有内容都会发送到 Parse 并正确存储
  • playframework中的多个文件上传

    我在上传多个文件时遇到一些问题 当我选择x个文件时 它成功通过 但第一个文件正在上传x次 而其他文件根本没有上传 有人能指出我做错了什么吗 Form form Projects uploadPictures project id encty
  • 从 HTML 表中检索过滤后的数据并将其格式化为数组

    我一直在 PHP 系统中开发一个函数 我可以在其中过滤记录 然后将其导出到具有使用 PHPSpreadSheet 模板的 Excel 我的问题是我不知道如何检索上面标题中所述的过滤记录 我想我的代码中遗漏了一些东西 这是我将记录从数据库提取
  • 使用 R 中的 3d Delaunay 三角面板绘制球体表面

    EDIT 更通用的解决方案可以在答案中看到这个问题 我想知道是否有人可以帮助我使用 XYZ 坐标绘制球体表面的近似值 我尝试使用该包计算 Delaunay 三角面板geometry然后用rgl 第一次尝试看起来不错 但不幸的是创建了穿过球体