Byron Dom
2020-Jul-29 21:35 UTC
[R] Accessing the C++ source associated with the rgl function shade3d
How can I access the C++ source associated with the rgl function shade3d. More specifically, I'm interested in the part of the code used by arrow3d to draw arrow heads. I'm not familiar with how GitHub is organized and I've put in a lot of effort doing searches there and on the web in general. The result has been a few fragments of rgl C++ code but not what I'm looking for. [[alternative HTML version deleted]]
Duncan Murdoch
2020-Jul-29 22:04 UTC
[R] Accessing the C++ source associated with the rgl function shade3d
On 29/07/2020 5:35 p.m., Byron Dom via R-help wrote:> How can I access the C++ source associated with the rgl function shade3d. More specifically, I'm interested in the part of the code used by arrow3d to draw arrow heads. > > I'm not familiar with how GitHub is organized and I've put in a lot of effort doing searches there and on the web in general. The result has been a few fragments of rgl C++ code but not what I'm looking for.shade3d() is purely written in R: so just type "shade3d" and you'll see that it's a generic function. Most commonly it is used on objects of type "mesh3d", so type "rgl:::shade3d.mesh3d" and you can see the full source. It makes calls to other R functions; C++ doesn't come in until it has chosen to draw triangles or quadrilaterals. I think you probably don't care about how those are drawn, but let me know if you are. The arrow3d function is also a pure R function, but not a generic. You can see the source by typing "arrow3d". Duncan Murdoch
Jeff Newmiller
2020-Jul-29 22:34 UTC
[R] Accessing the C++ source associated with the rgl function shade3d
To begin with, don't assume it is in C++... R supports multiple compiled languages, and rgl appears to have both C++ and C in it. I googled "r rgl github" and found an online copy of the src (source) files right away. 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 am afraid I don't have time to dig into the source to identify which file you need. Keeping in mind that the rgl package is an interface to lower level code, beware that you may need to leave the R code to find what you are looking for... in which case you would be dealing with a different code base and community of coders. On July 29, 2020 2:35:33 PM PDT, Byron Dom via R-help <r-help at r-project.org> wrote:>How can I access the C++ source associated with the rgl function >shade3d. More specifically, I'm interested in the part of the code used >by arrow3d to draw arrow heads. > >I'm not familiar with how GitHub is organized and I've put in a lot of >effort doing searches there and on the web in general. The result has >been a few fragments of rgl C++ code but not what I'm looking for. > > > [[alternative HTML version deleted]] > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >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.-- Sent from my phone. Please excuse my brevity.
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 12:45 UTC
[R] Accessing the C++ source associated with the rgl function shade3d
On 29/07/2020 6:34 p.m., Jeff Newmiller wrote:> To begin with, don't assume it is in C++... R supports multiple compiled languages, and rgl appears to have both C++ and C in it.Also a few thousand lines of Javascript, but in this case, the interesting code is all in R.> > I googled "r rgl github" and found an online copy of the src (source) files right away. 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.If you're using RStudio, a really convenient way to view the source for a package whose source is on Github (maybe the majority of packages these days?) is to create a new project from it. Then you can use the built-in search functions to jump to the source of any function. For rgl, you can get a copy of the Github mirror of the source by specifying the "Repository URL" as "https://github.com/rforge/rgl", and the "Project directory name" as "pkg/rgl". (The source is hosted in Subversion on R-forge.r-project.org, but Subversion is less familiar to most people these days and R-forge is pretty old-fashioned, so I'd go with Github instead. There are some irritating things about Github.) Once you've got it in RStudio, you can type "shade3d" in the "Go to file/function" box, and it will offer the generic as well as the two methods shade3d.mesh3d and shade3d.shapelist3d. This kind of search is probably also possible in other front ends (ESS etc.), and some purists probably know how to set it all up in command line BSD Unix, but I don't. Duncan Murdoch> I am afraid I don't have time to dig into the source to identify which file you need. Keeping in mind that the rgl package is an interface to lower level code, beware that you may need to leave the R code to find what you are looking for... in which case you would be dealing with a different code base and community of coders. > > On July 29, 2020 2:35:33 PM PDT, Byron Dom via R-help <r-help at r-project.org> wrote: >> How can I access the C++ source associated with the rgl function >> shade3d. More specifically, I'm interested in the part of the code used >> by arrow3d to draw arrow heads. >> >> I'm not familiar with how GitHub is organized and I've put in a lot of >> effort doing searches there and on the web in general. The result has >> been a few fragments of rgl C++ code but not what I'm looking for. >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> 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. >