David,
Have you used persp or trans3d before? Here is a little piece of data that I am
want to convert to 2d. I can plot (x,z) or (z,y). I know there is a better way
to convert it to 2d. I did it long time back in my 3d geometry class.
Thanks ../Murli
library(scatterplot3d)
dnaStr<-structure(list(x = c(-0.975688, -6.23153132820699, -9.09624485603214,
-8.63556544492323, -4.93169249022181, 0.543553938928959, 5.64174931291628,
8.34431911056127, 7.41509534849297, 3.25793817052871, -2.65307138974052,
-8.1739402999332, -11.2739770817494, -11.0523961376876, -0.975688,
4.65283498179159, 8.34690510167613, 8.79226549387186, 5.76337877843935,
0.36011024214207, -5.41074167495601, -9.54555893851015, -10.4135928669112,
-7.82046928259718, -2.87048496956275, 2.43182259657596, 5.78000473462146,
5.86423147485841, 0, 0, -0.0747010058197876, -0.224103017459363,
-0.373505029098938, -0.522907040738513, -0.672309052378088, -0.895991523123606,
-1.19395445297507, -1.49191738282653, -1.78988031267799, -2.08784324252945,
-2.45924790562486, -2.90409430196421), y = c(9.258795, 6.91702748519505,
1.94818850352474, -3.96996047465861, -8.44783195266353, -9.85357650887797,
-7.72879278806027, -2.98312550512766, 2.29012749945630, 6.14410676772742,
6.95007482866252, 4.24353089435013, -1.04920275957987, -7.29644254501929,
-9.258795, -8.06401751967253, -4.00546526835325, 1.49980094252710,
6.27267077967238, 8.41152490344017, 7.02084844979693, 2.35565979843151,
-3.73136662594352, -9.10401295836816, -11.8667592918697, -11.1209788118259,
-7.53850052521814, -2.53029214376759, 0, 0, -0.102817113851368,
-0.308451341554103, -0.514085569256838, -0.719719796959573, -0.925354024662308,
-1.23322653332276, -1.64333732294093, -2.05344811255911, -2.46355890217728,
-2.87366969179545, -3.38486435525866, -3.99714289256690), z = c(-1.8,
1.59, 4.69619670884637, 7.75612339689976, 11.0469981052342, 14.6030384546677,
18.357177803767, 22.4500668968389, 26.4412083543305, 29.9717539469394,
32.9734610690970, 35.5800854363887, 37.7984507886837, 40.1485063481344,
1.8, 5.19, 8.71511020948371, 12.4692495585831, 16.0252899080165,
19.3161646163510, 22.3760913044043, 25.1539112488595, 27.7605356161511,
30.7622427383088, 34.2927883309177, 38.2839297884093, 42.5850840652024,
47.0021666825248, 0, 3.39, 6.77522880132507, 10.1556864039752,
13.5361440066254, 16.9166016092755, 20.2970592119256, 23.6632300791254,
27.0151142108747, 30.3669983426241, 33.7188824743734, 37.0707666061228,
40.3989288961516, 43.7033693444598), v4 = c(1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = c("x",
"y", "z", "v4"), row.names = c(NA, -42L), class =
"data.frame")
endPtlength<-length(dnaStr$x)
endPt1<-endPtlength/3
maxX<-max(dnaStr$x)
minX<-min(dnaStr$x)
minY<-min(dnaStr$y)
maxY<-max(dnaStr$y)
minZ<-min(dnaStr$z)
maxZ<-max(dnaStr$z)
difX<-abs(maxX-minX)
difY<-abs(maxY-minY)
difZ<-abs(maxZ-minZ)
angStrong<-round(max(difX,difY,difZ))
angStrongX<-(angStrong-difX)/2
angStrongY<-(angStrong-difY)/2
angStrongZ<-(angStrong-difZ)/2
minX<-minX-angStrongX
maxX<-maxX+angStrongX
minY<-minY-angStrongY
maxY<-maxY+angStrongY
minZ<-minZ-angStrongZ
maxZ<-maxZ+angStrongZ
s3d<-scatterplot3d(dnaStr$x[1:endPt1],dnaStr$y[1:endPt1],dnaStr$z[1:endPt1],
color="black",xlim=c(minX,maxX),
ylim=c(minY,maxY),zlim=c(minZ,maxZ),grid=FALSE,
xlab="",ylab="",zlab="", axis=FALSE,
type="l")
s3d$points3d(dnaStr$x[1:endPt1],dnaStr$y[1:endPt1],dnaStr$z[1:endPt1])
s3d$points3d(dnaStr$x[(endPt1+1):(endPt1*2)],dnaStr$y[(endPt1+1):(endPt1*2)],dnaStr$z[(endPt1+1):(endPt1*2)])
s3d$points3d(dnaStr$x[(endPt1+1):(endPt1*2)],dnaStr$y[(endPt1+1):(endPt1*2)],dnaStr$z[(endPt1+1):(endPt1*2)],type="l")
s3d$points3d(dnaStr$x[(endPt1*2+1):(endPtlength)],dnaStr$y[(endPt1*2+1):(endPtlength)],dnaStr$z[(endPt1*2+1):(endPtlength)],type="l")
-----Original Message-----
From: David Winsemius [mailto:dwinsemius at comcast.net]
Sent: Saturday, September 26, 2009 10:49 PM
To: Nair, Murlidharan T
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] 3D to 2D projection
On Sep 26, 2009, at 10:07 PM, Nair, Murlidharan T wrote:
> Is there a method that I can use to convert 3D coordinates into 2D?
Yes.
> I was looking at persp and trans3d. Are those the ones I should be
> looking at ?
Yes.
> Thanks ../Murli
>
--
David Winsemius, MD
Heritage Laboratories
West Hartford, CT