Rasmus Liland
2020-Jul-29 23:27 UTC
[R] Accessing the C++ source associated with the rgl function shade3d
Dear Byron, On 2020-07-29 18:04 -0400, Duncan Murdoch wrote:> The arrow3d function is also a pure R > function, but not a generic. You can > see the source by typing "arrow3d".... but if I type rgl::shade3d, I get > rgl::shade3d function (x, ...) UseMethod("shade3d") <bytecode: 0x562692966fb8> <environment: namespace:rgl> > dput(rgl::shade3d) function (x, ...) UseMethod("shade3d") I've observed this is possible in the past, but now I can't remember how ... On 2020-07-29 15:34 -0700, Jeff Newmiller wrote:> On July 29, 2020 2:35:33 PM PDT, Byron Dom wrote: > > I'm not familiar with how GitHub is > > organized > > The official way is to find the CRAN > package page and download the tar.gz > file and extract the files. Either > way, you get the whole package source > code this way.I have a hunch this is the file you're looking for https://github.com/cran/rgl/blob/master/R/ashape3d.R Remember, dealing with code on github is just a small uptick from how Linux was developed before, by shipping around diffs and tarballs on a mailing list much similar to this one, Thorvalds merging them into the kernel in the authoritarian way. You can do it! *cheers* Best, Rasmus [1] http://gameoftrees.org/
Duncan Murdoch
2020-Jul-30 09:23 UTC
[R] Accessing the C++ source associated with the rgl function shade3d
On 29/07/2020 7:27 p.m., Rasmus Liland wrote:> Dear Byron, > > On 2020-07-29 18:04 -0400, Duncan Murdoch wrote: >> The arrow3d function is also a pure R >> function, but not a generic. You can >> see the source by typing "arrow3d". > > ... but if I type rgl::shade3d, I get > > > rgl::shade3d > function (x, ...) > UseMethod("shade3d") > <bytecode: 0x562692966fb8> > <environment: namespace:rgl>That includes the full source code to shade3d. Like most generic functions, it's a one-liner. In the part of my post that you deleted, I told the OP where to look next.> > dput(rgl::shade3d) > function (x, ...) > UseMethod("shade3d") > > I've observed this is possible in the > past, but now I can't remember how ... > > On 2020-07-29 15:34 -0700, Jeff Newmiller wrote: >> On July 29, 2020 2:35:33 PM PDT, Byron Dom wrote: >>> I'm not familiar with how GitHub is >>> organized >> >> The official way is to find the CRAN >> package page and download the tar.gz >> file and extract the files. Either >> way, you get the whole package source >> code this way. > > I have a hunch this is the file you're > looking for > https://github.com/cran/rgl/blob/master/R/ashape3d.RNo, that's not it. That file works with mesh3d objects, but it has nothing to do with arrows. Duncan Murdoch> > Remember, dealing with code on github is > just a small uptick from how Linux was > developed before, by shipping around > diffs and tarballs on a mailing list > much similar to this one, Thorvalds > merging them into the kernel in the > authoritarian way. > > You can do it! *cheers* > > Best, > Rasmus > > [1] http://gameoftrees.org/ >
Rasmus Liland
2020-Jul-30 11:15 UTC
[R] Accessing the C++ source associated with the rgl function shade3d
On 2020-07-30 05:23 -0400, Duncan Murdoch wrote:> On 29/07/2020 7:27 p.m., Rasmus Liland wrote: > > On 2020-07-29 18:04 -0400, Duncan Murdoch wrote: > > > The arrow3d function is also a pure R > > > function, but not a generic. You can > > > see the source by typing "arrow3d". > > > > ... but if I type rgl::shade3d, I get > > > > > rgl::shade3d > > function (x, ...) > > UseMethod("shade3d") > > <bytecode: 0x562692966fb8> > > <environment: namespace:rgl> > > That includes the full source code to > shade3d. Like most generic functions, > it's a one-liner. > > In the part of my post that you > deleted, I told the OP where to look > next.This part:> > > type "rgl:::shade3d.mesh3d" and you > > > can see the full source.Three colons. I didn't see it at first; Hmm ... I might have dyslexia or something ... So, Byron, this is the code that R reinterprets from the source, Rscript -e 'rgl:::arrow3d' | less Rscript -e 'rgl:::shade3d.mesh3d' | less so you cannot necessarily grab a line from there and expect it to look exactly the same in the source files. rasmus at beefylinuxbox ~ % grep -R 'paste(allowedMeshColor,' src/rgl src/rgl/R/mesh3d.R: stop("'meshColor' must be one of: ", paste(allowedMeshColor, collapse = ", ")) rasmus at beefylinuxbox ~ % grep -R 'pi - pi/nbarbs,' src/rgl 1 rasmus at beefylinuxbox ~ % grep -R 'pi/nbarbs,' src/rgl src/rgl/R/arrow3d.R: phi <- seq(pi/nbarbs, 2*pi-pi/nbarbs, len = nbarbs) rasmus at beefylinuxbox ~ %> > https://github.com/cran/rgl/blob/master/R/ashape3d.R > > No, that's not it. That file works > with mesh3d objects, but it has > nothing to do with arrows.... I'm sorry, now I believe rgl::shade3d.mesh3d and rgl::arrow3d lives in https://github.com/cran/rgl/blob/master/R/mesh3d.R and https://github.com/cran/rgl/blob/master/R/arrow3d.R respectively. Byron, there's a bunch of .cpp and .h files in https://github.com/cran/rgl/blob/master/src you can look at to find the triangle or quadrilateral code you're interested in, I'm not quite sure what to look for there. Best, Rasmus