'rgl' R 中的翻译问题

'rgl' translation issues in R

我使用 R 中的 rgl 包绘制了一系列点。为简单起见,我在两个维度上绘制了它们,但问题仍然存在于三个维度上。下面的代码片段和绘图显示了在 xy 平面上绘制的基本点线:

library(rgl)
seq <- seq(1, 10, by = 0.1)
df <- data.frame(x = seq, y = seq / 10)

clear3d("all")
bg3d(color = "white")
points3d(x = df$x, y = df$y, z = 0)
axes3d()
rgl.viewpoint(theta = 0, phi = 0)

点按预期绘制。但是,如果我将这些相同的点进行大量翻译,图形设备似乎无法处理这些点:

library(rgl)
seq <- seq(1, 10, by = 0.1)
df <- data.frame(x = seq, y = seq / 10)

# Translate points
df <- df + 1000000

clear3d("all")
bg3d(color = "white")
points3d(x = df$x, y = df$y, z = 0)
axes3d()
rgl.viewpoint(theta = 0, phi = 0)

这是已知的限制吗?是 OpenGL 的问题,还是包的问题?我正在处理一些具有关联坐标系的点和曲面,因此我不想将我的数据转换回原点。

@derhass 的想法是对的。来自 rgl 手册:

Note that many of these calculations are done on the graphics card using single precision; you will likely see signs of rounding error if your scene requires more than 4 or 5 digit precision to distinguish values in any coordinate.