2015-02-25 2 views
1

Я построил ряд точек, используя пакет rgl в R. Я разработал их в двух измерениях для простоты, но проблема все еще существует в трех измерениях. Фрагмент кода и график ниже показывают основную линию точек, построенных в плоскости ху:Проблемы с 'rgl' в R

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) 

First plot

точки диаграммы, как ожидалось. Однако, если я эти же точки, и перевести их в значительном количестве, графическое устройство не кажется, чтобы быть в состоянии обрабатывать точки:

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) 

Second plot

Это известное ограничение? Проблема с OpenGL или с пакетом? Я работаю с некоторыми точками и поверхностями, которые имеют связанную систему координат, поэтому я бы предпочел не переводить мои данные обратно в исходное.

+3

Похоже, вы ограничены точностью плавания. OpenGL byu по умолчанию работает только с одноточечными поплавками (что отлично подходит для графики). С современными GL и GPU (GL 4.x) вы могли бы использовать двойную точность для данных и преобразований вершин, но я не знаю, поддержит ли это rgl. – derhass

ответ

1

@derhass имела правильную идею. Из справочника rgl:

Обратите внимание, что многие из этих расчетов выполняются на графической карте с использованием одинарной точности; вы, скорее всего, увидите признаки ошибки округления, если ваша сцена требует более 4 или 5 цифр точности, чтобы отличать значения в любой координате.

Смежные вопросы