rgl, чтобы сохранить постоянные цвета в 3D-графике

В пакете matlib, https://github.com/friendly/matlib, используется функция plotEqn3d() построить плоскости, соответствующие системе линейных уравнений с 3 переменными вида $A x = b$, используя разные цвета для каждой плоскости.

Однако в используемом освещении есть что-то, что заставляет плоскости менять цвет в зависимости от ориентации графика, что сбивает с толку в этом приложении, и я не знаю, как это изменить.

Вот пример:

library(matlib)
library(rgl)

A <- matrix(scan(), byrow=TRUE, nrow=3)
2 -2 0
1 -1 1
4 4 -4


b <- 1:3

plotEqn3d(A, b)

Чтобы показать эффект, я сделал movie3d(), вращающийся вокруг оси Z.

movie3d(spin3d(rpm=15), duration=4, movie="plotEqn", dir=".")

В фильме достаточно ясно, какая плоскость какая, а на неподвижном изображении - нет, в зависимости от ориентации. Какие par3d() или другие настройки мне нужны, чтобы цвет самолетов не менялся?

введите здесь описание изображения

Второй вопрос: функция использует rgl::plot3d() для настройки основной рамки графика. Можно ли отключить деления и значения делений на осях? Если да, то как?


person user101089    schedule 05.10.2016    source источник


Ответы (1)


Кажется, лучше не использовать plotEqn3d(), а получить параметры и использовать функцию rgl(). Вы можете удалить геометорический эффект с помощью lit = F (деталь; ?rgl.material).

open3d()
plot3d(0,0,0, xlim = c(-2,2), ylim = c(-2,2), zlim = c(-3,3), type = "n", axes = F,
       xlab = "", ylab = "", zlab = "")      # a draft
planes3d(A[,1], A[,2], A[,3], -b, col = 2:(nrow(A) + 1), alpha = 1, lit = F)
spheres3d(solve(A, b), radius = 0.2)
box3d()
 # axes3d(c("x", "y", "z"))  # fixed tick marks and values

play3d(spin3d(rpm=15), duration = 4)
person cuttlefish44    schedule 05.10.2016
comment
Спасибо! Это был lit = FALSE, которого мне не хватало. При просмотре ?rgl.materials вообще не было понятно, что означает lit. И axes=FALSE отвечает на мой 2-й вопрос. - person user101089; 05.10.2016
comment
Отправьте патч в документацию на R-forge. - person user2554330; 06.10.2016