rgl材料在3D图中保持颜色恒定

时间:2016-10-05 14:19:36

标签: r 3d rgl plane

matlibhttps://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()或其他设置来保持平面颜色不变?

enter image description here

第二个问题:该函数使用rgl::plot3d()来设置基本绘图框。是否可以关闭轴上的刻度线和刻度值?如果是这样,怎么样?

1 个答案:

答案 0 :(得分: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)