in reply to Re: 3D Point Plotting in thread 3D Point Plotting
rbc, thanks, but that script works with Tk... which isn't really applicable in the context of CGI, as far as I know... gnuplot looks like it might do the trick, but I'll have to play around with it a bit more. And as to your suggestion, Merlin42, very interesting but a bit beyond me, for now (still interested though). I figure I might as well explain the point of all this anyways: I'm going to be having as data a large number of RGB values, and am trying to plot them all in a 3d cubic space, so one can visually see clustering of the colors. For now I'll try gnuplot some more, but any other suggestions would be great. Thanks.
Re: Re: Re: 3D Point Plotting
by Merlin42 (Friar) on May 29, 2002 at 14:05 UTC

Ok first I want to apoligize for my previous post ... the formulas are fscked up. Rather than try to fix them for the general case Ill give you a simple version that will work for your specific case.
for each point R,G,B contained in (0,1)x(0,1)x(0,1):
X=(R0.5)/(B+1)*IMAGE_WIDTH + IMAGE_WIDTH/2
Y=(G0.5)/(B+1)*IMAGE_HEIGHT + IMAGE_HEIGHT/2
You can change the 1 to 'dolly' the camera back and forth.
Just swap the variables to view along a different color axis.
To view not along a color axis you need to rotate the points before hand. eg
R'= R*cos(theta)+G*sin(theta)
G'=R*sin(theta)+G*cos(theta)
B'= B
to rotate about the B axis
R'= R
G'= G*cos(theta)+B*sin(theta)
B'=G*sin(theta)+B*cos(theta)
to rotate about the R axis, and
R'=R*cos(theta)B*sin(theta)
G'=G
B'=R*sin(theta)+B*cos(theta)
to rotate about the G axis
Geez I can't get anything right...maybe this really isnt as simple as I said :). The formulas should now map the entire RGB space into the image ... if you rotate the space then the corners will not be visible ... fix this by increasing the value added to the denomiator.  [reply] 

Thank you very much for all this; I'll get to experimenting with it after exams are over, and most likely post what happens. (and the name, it's still me, I just decided to register)
 [reply] 
