首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取rgl视图参数

获取rgl视图参数
EN

Stack Overflow用户
提问于 2014-03-08 01:50:46
回答 3查看 4.7K关注 0票数 20

虽然可以使用view3d(theta, phi,...)函数将观察点旋转到合适的位置,同时拍摄3d图表/对象的快照,但很难猜测theta和phi值中的哪一个更好。

一旦显示了图,我们就可以交互地旋转它。但是,有没有办法在手动旋转之后找出绘图的theta和phi参数,以便我们可以通过编程使用它(即,当创建许多应该具有相同视点的绘图时)?

EN

回答 3

Stack Overflow用户

发布于 2014-08-15 20:15:35

我自己一直在尝试解决这个问题,我想我已经找到了维护用户修改的交互式绘图的视角的答案。view3d只影响已经打开的窗口中的透视图,关键是在实际生成绘图之前使用open3d设置窗口和透视图。

换句话说,我们实际上不需要(直接)使用phi和theta角度信息。生成交互式绘图并获得所需的透视图后(您可能希望调整窗口大小,否则图像抓取会太小),如下所示将提取所需的信息:

代码语言:javascript
复制
zoom<-par3d()$zoom
userMatrix<-par3d()$userMatrix
windowRect<-par3d()$windowRect

然后,下面的代码将以所需的大小和透视(并缩放)打开一个窗口,生成绘图,然后抓取图像。

代码语言:javascript
复制
open3d(zoom = zoom, userMatrix = userMatrix, windowRect=windowRect)
perps3d(x=x,y=y,z=z) # plus whatever arguments you need, but ignoring all perspective arguments
rgl.snapshot( filename, fmt="png", top=TRUE)

这是基本思想,可以用来自动生成相同透视图。您还可以随意使用par3d中的scale或fov参数,以同样的方式提取和使用信息。我认为这就是上面的Ali所需要的。

在自动生成多个绘图时调用persp3d有点不雅致,因为该函数实际上是为交互式绘图而设计的。我猜想你可以使用par3d中的userMatrix,zoom,fov,scale等信息,以及一些数学运算(例如Ali的)来确定phi,theta,r和d,并将它们直接放入persp中-而不是处理每个图的persp3d,但我还没有测试过。

票数 13
EN

Stack Overflow用户

发布于 2017-08-15 12:14:09

不需要提取视角。您可以提取userMatrix

代码语言:javascript
复制
um <- par3d()$userMatrix

然后使用

代码语言:javascript
复制
view3d(userMatrix = um)

将恢复视角。

票数 4
EN

Stack Overflow用户

发布于 2022-02-03 22:25:07

是的,在RGL设备窗口中手动旋转视图后,您可以在要使用的任何坐标系中获得重新创建该视图所需的所有方向信息。

从基本的rgl包中,您可以获得:

代码语言:javascript
复制
myUserMatrix <- par3d()$userMatrix
myZoom <- par3d()$zoom
myObserver <- par3d()$observer

接下来安装orientlib包,因为我们将使用的两个函数依赖于该包

代码语言:javascript
复制
install.packages("orientlib")

然后使用您提取的userMatrix,您可以使用rglToBase函数来提取theta和phi,从而获得theta和phi变量。

代码语言:javascript
复制
theta <- rglToBase(myUserMatrix)$theta
phi <- rglToBase(myUserMatrix)$phi

或者,也可以使用rglToLattice函数获取x,y和z坐标

代码语言:javascript
复制
x <- rglToLattice(myUserMatrix)$x
y <- rglToLattice(myUserMatrix)$y
z <- rglToLattice(myUserMatrix)$z
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22257196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档