[R] joining two points in rgl

Duncan Murdoch murdoch at stats.uwo.ca
Thu Aug 20 03:02:20 CEST 2009


On 19/08/2009 3:51 PM, Nair, Murlidharan T wrote:
> I tried the following
> 
> library(rgl)
> pts<-structure(list(x = c(-0.975688, -0.975688), y = c(9.258795, -9.258795), z = c(-1.8, 1.8)), .Names = c("x", "y", "z"), class = "data.frame", row.names = c(NA, -2L))
> 
> plot3d(pts$x,pts$y,pts$z, col="grey", size=2, box=FALSE, axes=TRUE, type="s")
> lines3d(pts$x,pts$y,pts$z, col="black", lwd=5)
> x1<--0.975688 
> y1<-9.258795  
> z1<--1.8+0.2
> x2<--0.975688 
> y2<--9.258795 
> z2<-1.8+0.2
> text3d(x1,y1,z1,text=c("a"))
> text3d(x2,y2,z2,text=c("t"))
> 
> cylinder3d(c(x1,y1,z1),c(x2,y2,z2))

The first argument should be a matrix giving all the coordinates of the 
centres.

> 
> 
> 1> I tried the above and could not get it to work. I did not understand how to give the Frenet coordinates. Can you give me some tip here please?

There was actually a typo in the handling of e2, but with that fixed, 
this works:

plot3d(pts, col="grey", size=2, box=FALSE, axes=TRUE, type="s", 
xlim=c(-5,5), ylim=c(-5,5), zlim=c(-5,5))
text3d(pts[1,],text=c("a"), adj = c(0.5, -1))
text3d(pts[2,],text=c("t"), adj = c(0.5, -1))
shade3d(cylinder3d(pts, radius=0.1, e2=rbind(c(1,0,0),c(1,0,0))), col="red")

It's not perfect, because it draws a cylinder with a circular cross 
section, but the original plot has very uneven scaling.  That's why I 
added the xlim, ylim, and zlim:  to get equal coordinates in all axes.

> 
> 2> Is there a better way of writing the text than what I have done above? Can I make the spheres transparent so that if I write the text at the exact same coordinate of the sphere the text is above the sphere and can be seen?

You can use adj = c(0.5, -1) in the text3d calls to place the text above 
the point, as I did above.

Duncan Murdoch


> 
> 
> Thanks ../Murli
> 
>  
> 
> 
> 
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Nair, Murlidharan T
> Sent: Friday, August 14, 2009 4:14 PM
> To: Duncan Murdoch
> Cc: r-help at r-project.org
> Subject: Re: [R] joining two points in rgl
> 
>> Thanks, for lwd. I could not find rgl 0.85. The latest one I saw was 0.84. Can you tell me where I can download it from? 
>>
> 
> It's on r-forge.r-project.org
> 
>> Also, is there  a curve3d? I need to join two points in 3d smoothly. 
>>
> No, though par3dinterp could probably be faked into doing that.
> 
> Duncan Murdoch
> 
> 
> 
> 
> Thanks ../Murli
> 
> 
> -----Original Message-----
> From: Duncan Murdoch [mailto:murdoch at stats.uwo.ca] 
> Sent: Thursday, August 13, 2009 8:24 PM
> To: Nair, Murlidharan T
> Cc: r-help at r-project.org
> Subject: Re: [R] joining two points in rgl
> 
> Nair, Murlidharan T wrote:
>> Hi!!
>>
>> I need to draw a cylinder/tube joining two points. I am trying to make something presentable, I have been able to do it using lines3d. But is it possible to 
>> increase the thickness of the lines? The size parameter does not work. Does any one have any suggestions?
>>   
> There's a new function cylinder3d  (in rgl 0.85) that probably does 
> exactly what you want, but lwd is the parameter that controls line width.
> 
> Duncan Murdoch
>> Thanks ../Murli
>>
>> library(rgl)
>> pts<-structure(list(x = c(-0.975688, -0.975688), y = c(9.258795, -9.258795
>> ), z = c(-1.8, 1.8)), .Names = c("x", "y", "z"), class = "data.frame", row.names = c(NA,
>> -2L))
>>
>> plot3d(pts$x,pts$y,pts$z, col="grey", size=2, box=FALSE, axes=FALSE, type="s")
>> lines3d(pts$x,pts$y,pts$z, col="grey", size=2)
>>
>> ______________________________________________
>> 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.
>>   
> 
> ______________________________________________
> 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.




More information about the R-help mailing list