用 rgl 填充球体上的区域

2023-12-19

这是世界各国首都的球形 Voronoï 镶嵌:

我有定义每个国家边界的点的坐标。我想用颜色填充这些国家。动机是用与海洋相同的颜色绘制沃罗诺伊边缘,这样我们就不会在国外看到它们。换句话说,我正在寻找类似于polygon函数,但适用于球面多边形。


Edit

好吧,我现在明白了。但由于某种原因,水的青色和 Voronoï 边缘的青色是不同的:


以下是如何填写国家/地区。

library(maps)
data(worldMapEnv)

# make a PNG image of the world in 2D with filled countries
world <- map("world", plot = FALSE, fill = TRUE, wrap = c(0, 360))

png("world2D.png", width = 1024L, height = 1024L)
opar <- par(mar = c(0, 0, 0, 0))
plot(world$x, world$y, type = "n", xlab = NA, ylab = NA, axes = FALSE,
     xaxs = "i", yaxs = "i", xlim = c(0, 360), ylim = c(-90, 90))
polygon(world$x, world$y, col="orangered", lwd = 2)
par(opar)
dev.off()
# use spherical coordinates to make a mesh of the unit sphere
library(cgalMeshes)
sphericalCoordinates <- function(θ, ϕ){
  x <- cos(θ) * sin(ϕ)
  y <- sin(θ) * sin(ϕ)
  z <- cos(ϕ)
  rbind(x, y, z)
}
rmesh <- parametricMesh(
  sphericalCoordinates, urange = c(0, 2*pi), vrange = c(0, pi),
  periodic = c(TRUE, TRUE), nu = 1024L, nv = 1024L
)
rmesh$normals <- rmesh$vb[-4L, ]

# get the angles θ and ϕ of the vertices of the mesh
UV <- cooltools::car2sph(t(rmesh$vb[-4L, ]))
UV <- cbind(UV[, 3L], UV[, 2L])


# now load the PNG image
library(imager)
img <- load.image("world2D.png")
# take the r, g, b channels
r <- squeeze(R(img))
g <- squeeze(G(img))
b <- squeeze(B(img))

# make interpolation functions to get the colors of the UV points
library(cooltools) # to get the `approxfun2` function
x_ <- seq(0, 2*pi, length.out = 1024L)
y_ <- seq(0, pi, length.out = 1024L)
f_r <- approxfun2(x_, y_, r)
f_g <- approxfun2(x_, y_, g)
f_b <- approxfun2(x_, y_, b)

# now, interpolate the r, g, b values
UV_r <- f_r(UV[, 1L], UV[, 2L])
UV_g <- f_g(UV[, 1L], UV[, 2L])
UV_b <- f_b(UV[, 1L], UV[, 2L])

# convert rgb to hex codes
clrs <- rgb(UV_r, UV_g, UV_b)
clrs[clrs == "#FFFFFF"] <- "cyan" # replace white with cyan


# assign the colors to the vertices of the mesh
# I don't know why, but one has to reverse the colors
rmesh$material <- list(color = rev(clrs))


# plot
library(rgl)
open3d(windowRect = 50 + c(0, 0, 512, 512), zoom = 0.7)
shade3d(rmesh, meshColor = "vertices")
snapshot3d("world3D.png", webshot = FALSE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 rgl 填充球体上的区域 的相关文章

  • 如何按用户定义(例如非字母顺序)对数据框进行排序[重复]

    这个问题在这里已经有答案了 给定一个数据框dna gt dna chrom start chr2 39482 chr1 203918 chr1 198282 chrX 7839028 chr17 3874 以下代码重新排序dna by ch
  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • `as.matrix` 和 `as.data.frame` S3 方法与 S4 方法

    我注意到定义as matrix or as data frame作为 S4 类的 S3 方法 使例如lm formula objS4 and prcomp object 开箱即用 如果它们被定义为 S4 方法 则这不起作用 为什么将方法定义
  • 如何仅剪切剪切平面的交集(而不是并集)?

    在 OpenGL JOGL 中 当使用多个剪切平面时 似乎会应用所有剪切平面的并集 我想要的是路口要应用的所有剪裁平面 这可能吗 请参阅下面的简化二维示例 Edit An example of clipping by vertex shad
  • 闪亮的应用程序包:css 和所有 www/ 目录内容

    我正在尝试将 Shiny 应用程序转换为 R 包 但我在处理有关 www 目录以及 松散 文件的所有问题时遇到了问题 我闪亮的应用程序运行得很好 但是当我尝试 打包它 时 它不起作用 我闪亮的应用程序目录 my shiny app R ut
  • R - 重塑 - 熔化错误

    我正在尝试融化数据框 但出现了这个奇怪的错误 有什么想法吗 str zx7 data frame 519 obs of 5 variables calday new Date format 2011 01 03 2011 01 04 201
  • 如何按定义的顺序将图像合并到一个文件中

    我有大约 100 张图像 png 我不想手动执行此操作 而是希望将它们按照定义的顺序 基于文件名 并排放置在一个 pdf 中 每行 12 个图像 有人有什么建议吗 我按照下面托马斯告诉我的方法尝试了 它把它们贴在旁边有一个黑边 我怎样才能去
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • 平滑连续 2D 点

    UPDATE 感谢 user20650和 李哲源Zheyuan Li 这是我想出的解决方案 Example data set df 3600 observations points Create a vector of the cumula
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 自定义轴缩放后 ggplot2 缺少标签

    我正在尝试使用我的 x 轴应用自定义缩放ggplot2 and scales trans new 但是 当我这样做时 一些轴标签丢失了 有人可以帮我弄清楚为什么吗 Setup library tidyverse the data ds lt
  • 无法编译包“maps”

    当我安装 maps 包时 安装中出现警告 ld warning ignoring file Library Developer CommandLineTools SDKs MacOSX10 14 sdk usr lib libSystem
  • 无法将“gather”输出的列名称更改为默认名称以外的任何名称

    我正在尝试使用gather in the tidyr包 但我无法更改默认名称的输出列名称 例如 df data frame time 1 100 a 1 100 b 101 200 df long df gt gather foo bar
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x

随机推荐

  • 如何忽略“__init__.py”文件中的 Pyflakes 错误“已导入但未使用”?

    我将测试分成多个 Python 文件 tests init py test apples py test bananas py py 我将测试导入 init py 文件中 from test apples import ApplesTest
  • 期间发生内部错误:“更新 Maven 项目”。不支持的 IClasspathEntry kind=4

    正如标题提到的 我有以下问题 我使用Eclipse with Maven Nature当我更新 Maven 项目时 出现以下错误 期间发生内部错误 更新 Maven 项目 不支持的 IClasspathEntry kind 4 总是返回的解
  • django 测试文件下载 - “ValueError:已关闭文件上的 I/O 操作”

    我有一个用于文件下载的视图代码 并且它在浏览器中运行良好 现在我尝试使用内部 django Client get 为其编写一个测试 response self client get compile book id book id self
  • MySQL-Linux 尝试停止其服务时出现错误[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 这是当我尝试停止计算机上的 MySQL 服务器时收到的消息 MySQL manager or server PID file could not be
  • 具有透明圆角的 UIImage

    我使用以下代码向 UIImage 添加圆角 但问题是圆角显示 白色 区域而不是透明或 透明 区域 我在这里做错了什么 UIImage makeRoundCornerImageWithCornerWidth int cornerWidth c
  • 使用SFINAE禁用模板类成员函数

    是否可以使用 SFINAE 和std enable if禁用模板类的单个成员函数 我目前有一个与此类似的代码 include
  • JavaFX 全屏独占模式

    我正在制作一个 JavaFX kiosk 应用程序 需要完全控制屏幕并禁止关闭 最小化和某些按键 我想知道是否有一种方法可以使 JavaFX 应用程序以全屏独占模式运行 如果没有 是否有任何替代方案可以实现相同的目标 我尝试过使用 stag
  • 是否可以将第二个 slug 添加到 Django 中的 URL 路径?

    我正在使用 Django 2 1 版本 我想在我的项目中创建这种类型的 URL 路径 www example com bachelor germany university of frankfurt corporate finance 可以
  • 如何提高scrapy的下载速度?

    我正在使用 scrapy 并行下载来自许多不同域的页面 我有数十万个页面要下载 因此性能很重要 不幸的是 正如我所分析的 scrapy 的速度一样 我每秒只能获取几页 确实 平均每秒大约 2 页 我之前编写过自己的多线程蜘蛛程序 每秒可以处
  • 是否可以将 mySQL 设置为星期六作为一周的开始?

    是否可以将 mySQL 设置为星期六作为一周的开始 我正在尝试运行如下查询 SELECT DISTINCT week date FROM table WHERE date BETWEEN 2010 08 14 AND 2010 08 27
  • 排除节点 RVest

    我正在使用 RVest 抓取博客文本 并且正在努力找出一种排除特定节点的简单方法 以下拉取文本 AllandSundry test lt read html http www sundrymourning com 2017 03 03 le
  • pip install numpy pandas 失败?

    Pandas 依赖于 numpy 并且有一个开放构建问题 https github com pydata pandas issues 507安装 pandas 依赖项 无论如何 有什么想法为什么 pip 在下面的示例中退出 numpy 吗
  • 如何将新的和更新的行从离线数据库复制到在线数据库?

    这是一种情况 您有一个桌面应用程序 并且其数据库位于远程服务器中 就我而言 它是 MySQL 应用程序是用 Delphi XE3 编写的 但是 当客户想要离线和在线数据时 为了速度和安全 我们需要 使用远程服务器信息登录 更多更新 将线上数
  • 发生异常时整个 blazor Web 应用程序停止工作

    请为我提供以下问题的任何合适的解决方案 当 blazor 应用程序抛出任何异常时 整个应用程序就会崩溃并且没有链接起作用 直到我可以再次通过工作室运行该应用程序 对于这个问题该怎么办 谢谢并致以诚挚的问候 Edited 为了提供所需的信息
  • recaptcha 没有通过 selenium python 中的 anticaptcha 插件解决

    我最近开始在一个涉及自动化的项目中使用 selenium 该计划中的障碍之一是 ReCaptcha 系统 因此我决定使用反验证码作为当我的机器人遇到验证码时解决验证码的服务 我正确安装了该插件 并在他们的网站上找到了一些带有硒的测试代码 f
  • 什么是声明式编程? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 将行添加到具有动态列的 HTML 表中

    我正在使用下面的代码 作为上一个问题的解决方案提供将 mySQL 记录显示为 HTML 表列 https stackoverflow com questions 21870246 display mysql records as html
  • 如何判断 Windows 上的 Python 进程是否响应

    我正在编写一个 python 脚本来保持有错误的程序打开 我需要弄清楚该程序是否没有响应并在 Windows 上将其关闭 我不太清楚该怎么做 在 Windows 上您可以执行以下操作 import os def isresponding n
  • ggplot 中月份缩放时条形宽度不一致

    查了好久 没找到讨论类似问题的帖子 我在日期缩放方面遇到问题ggplot 我认为这与方式有关ggplot正在处理日期 我试图消除列之间的所有空白 因为我的最终结果将类似于以下内容 这是一个显示跨月项目的容量规划图表 即使使用默认的缩放和宽度
  • 用 rgl 填充球体上的区域

    这是世界各国首都的球形 Vorono 镶嵌 我有定义每个国家边界的点的坐标 我想用颜色填充这些国家 动机是用与海洋相同的颜色绘制沃罗诺伊边缘 这样我们就不会在国外看到它们 换句话说 我正在寻找类似于polygon函数 但适用于球面多边形 E