Re: [R] RGL 'front' upwards default in rendering image

From: Joe Byers <>
Date: Tue 03 Oct 2006 - 15:31:19 GMT

thanks for the reply.

I wish I could create a self contained example of the problem, but I can't.

My task is displaying the surface generated from a simulation of Forward prices for a selected trajectory. The x axis is time from 9/25/06 to 3/31/2007 or 133X1 vector of integers. The z axis is the expiration month of the forwards as integers (1-36), the y axis is price. For each day(x) there are 36 prices (y). surface3d displays the surface but displays the z axis in reverse order and the x axis in reverse order as well. I can rotate the image 180 degrees but time on the x axis is running from right to left instead of left to right. My z axis is now in ascending order.

I have read the documentation for rgl and much of the supported documents on neosciences web site, but I can not understand how to generate the image with the displaying the x axis left to right and z axis in ascending order. I think that rotation matrix or a setting in rgl.materials will do it, but I can't figure out which one. This mathematical conversions is beyond me.

Here is my code
#set x and z vectors
x<-as.numeric(,order='ymd')); z<-as.numeric(colnames(a)[1:ncurve]); #only use the portion of the curve with data, exclude NaN's


            #attempt to set the image/window size, constrained to 0,0,256,256 wish I could change this to 0,0,640,640

    res<- rotationMatrix(pi,0, 1, 0) # attempt to set rotation, does not make a difference
#create a x labels vectors that somewhat matches in the image, trial and error here
labels<-as.character( could just use rownames(calday.1) labels<-labels[c(1,n%/%6,n%/%4,n%/%3,n%/%2,(n*2)%/%3,(n*3)%/%4,(n*5)%/%6,n)]

    y<-ez[,,i]; # set y array
    #create the y axis labels,again trial and error to fit, using 7 slots from 0 to the max(y)

    labelsy<-as.character(format(max(y)*rep(1/7,8)*(seq(1:8)-1),digits=2)) #pretty colors thank you rgl docs.

    ylim <- range(y)
    ylen <- ylim[2] - ylim[1] + 1
    colorlut <- terrain.colors(ylen) # height color lookup table     col <- colorlut[ y-ylim[1]+1 ] # assign colors to heights for each point #generate the surface

        title3d(xlab='Date',zlab='Contract Month');#,ylab='Price $'); 
#sub='Forward curve Trajectory 1',

Thank you

Duncan Murdoch wrote:
> Joe Byers wrote:

>> The documentation for surface3d and rgl.surface in the package RGL 
>> states
>> "'surface3d' always draws the surface with the `front' upwards
>>       (i.e. towards higher 'z' values).  This can be used to render the
>>       top and bottom differently; see 'rgl.material' and the example
>>       below."
>> Is there a way to override this default?  I have search all the 
>> related methods help and the documents on RGL's website.

> There are lots of ways to override it: as the docs say, rgl.surface
> is more flexible than surface3d, and you can draw triangles or quads
> arbitrarily. What sort of thing do you want to do?
> Duncan Murdoch mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Wed Oct 04 01:36:47 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 03 Oct 2006 - 18:30:06 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.