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: [email protected] [mailto:[email protected]] On 
Behalf Of Nair, Murlidharan T
Sent: Friday, August 14, 2009 4:14 PM
To: Duncan Murdoch
Cc: [email protected]
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:[email protected]] Sent: Thursday, August 13, 2009 8:24 PM
To: Nair, Murlidharan T
Cc: [email protected]
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)

______________________________________________
[email protected] 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.

______________________________________________
[email protected] 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.

______________________________________________
[email protected] 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.

Reply via email to