【问题标题】:rgl materials to keep colors constant in a 3D plotrgl 材料在 3D 图中保持颜色不变
【发布时间】:2016-10-05 14:19:35
【问题描述】:

matlibhttps://github.com/friendly/matlib 中,函数plotEqn3d() 用于绘制对应于$A x = b$ 形式的3 个变量的线性方程组的平面,每个变量使用不同的颜色飞机。

但是,所使用的照明有些东西会使平面根据绘图的方向改变颜色,这在此应用程序中令人困惑,我不知道如何更改它。

这是一个例子:

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() 设置基本图框。是否可以关闭轴上的刻度线和刻度值?如果有,怎么做?

【问题讨论】:

    标签: r 3d rgl plane


    【解决方案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)
    

    【讨论】:

    • 谢谢!我错过的是lit = FALSE。查看?rgl.materials 并不清楚lit 的含义。 axes=FALSE 回答了我的第二个问题。
    • 提交补丁到 R-forge 上的文档。
    猜你喜欢
    • 2015-08-13
    • 2020-01-15
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多