rgl: How to position a window during open3d call
Yihui Xie wrote:
Thanks Duncan, I have also been wondering about this problem for a long time.
If you suspect a bug in a package, it's good to contact the package maintainer. Often (as in this case) they are unaware of the bug and appreciate the report. Duncan Murdoch
Regards, Yihui -- Yihui Xie <xieyihui at gmail.com> Phone: +86-(0)10-82509086 Fax: +86-(0)10-82509086 Mobile: +86-15810805877 Homepage: http://www.yihui.name School of Statistics, Room 1037, Mingde Main Building, Renmin University of China, Beijing, 100872, China On Thu, Sep 18, 2008 at 1:49 AM, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
On 9/17/2008 1:13 PM, Koen Stegen wrote:
Dear all, The documentation on the function open3d in the rgl package, reads: open3d opens a new rgl device, and sets the parameters as requested. I want the new rgl device (window) to be sized and positioned in a specific place on my screen. So, I try to set the "windowRect" parameter as follows:
> library("rgl")
> open3d(windowRect=c(100,100,500,500))
[1] 1 Obviously you can't see where the window appears, so I'll ask for the "windowRect" parameter:
> par3d()["windowRect"]
$windowRect [1] 2300 764 2556 1020 As you can see, the window is not positioned at (100,100) nor is the size 400x400. The size is the default 256x256 and the position is where the window manager would put a new window if its position is unspecified. [note: I have a dual screen setup so the coordinates are not bogus] If, however, I use par3d to set the "windowRect", the window goes where it is supposed to go:
> par3d(windowRect=c(100,100,500,500)) > par3d()["windowRect"]
$windowRect
[1] 104 125 504 525
The (4,25) pixels offset are the border and title bar of the window.
For completeness sake:
This behavior occurs on both Windows+ATI, Linux+ATI, Linux+NVidia.
On Windows is R version 2.7.2, and rgl version 0.81 (installed today).
Does anyone know how to set the windowRect parameter during an open3d
call?
Looks like a bug. The open3d function is defined as
open3d
function (..., params = get("r3dDefaults", envir = .GlobalEnv))
{
rgl.open()
clear3d("material", defaults = params)
params$material <- NULL
if (!is.null(params$bg)) {
do.call("bg3d", params$bg)
params$bg <- NULL
}
do.call("par3d", params)
return(rgl.cur())
}
<environment: namespace:rgl>
and you'll notice that the ... parameters are never used. Not sure when
this error crept in...
The workaround is simply to use par3d() after open3d().
Duncan Murdoch
Thanks in advance,
Koen Stegen
Royal Meteorological Institute of Belgium
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.