POV-Ray : Newsgroups : povray.general : show a line in 3D ? Server Time
3 Aug 2024 04:17:59 EDT (-0400)
  show a line in 3D ? (Message 6 to 15 of 15)  
<<< Previous 5 Messages Goto Initial 10 Messages
From: Harold
Subject: Re: show a line in 3D ?
Date: 16 Jun 2004 15:09:42
Message: <40d09af6@news.povray.org>
Another approach is to use a sphere_sweep. If it is a straight
line then you only need to define the begin and end points.

Here is a POV script to make a line chart. It uses sphere_sweep
to draw lines between points to illustrate changes in the number of
children placed in foster homes (real data). Not elegant POV script
but it works.

Harold

//=========BEGIN POV===============================
//--- POV Ray Line Chart Scene File --- 


global_settings { assumed_gamma 2.2 }
#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"


// ---------- Lights, Camera, Action -----------

//  Single camera
#declare Camx=-0.1;

 camera {location <Camx, 0.6, -3> look_at <Camx,0.6,0> angle 40}

 light_source { < 10,10,-40> color rgb <1,1,1> }
 light_source { <-30,20,-40> color rgb <0.75,0.75,0.75> }
 light_source { <0.5,10,-12> color rgb <0.55,0.55,0.55> }


background {Black}

// Un-comment the following lines to check parameter values,
//   put the name of the parameter after Str(
//text {ttf  "crystal.ttf",  str(l1P1,8,4), 2, 0 translate <-1,1,-2>
texture{White_Marble}}
//text {ttf  "crystal.ttf",  str(l1P2,8,4), 2, 0 translate <-1,0,-2>
texture{White_Marble}}
//text {ttf  "crystal.ttf",  str(l1P3,8,4), 2, 0 translate <-1,-1,-2>
texture{White_Marble}}

//#declare VertScale =  0.03658 ;

// Line for Butte County out of home placements
sphere_sweep {linear_spline 16,
          <-.8, 1.0337, 0>, .01
          <-.7, 1.0155, 0>, .01
          <-.6, 1.0074, 0>, .01
          <-.5, 1.0398, 0>, .01
          <-.4, 1.0196, 0>, .01
          <-.3, 1.0115, 0>, .01
          <-.2, 1.058 , 0>, .01
          <-.1, 1.058 , 0>, .01
          < .0, 1.0721, 0>, .01
          < .1, 1.0742, 0>, .01
          < .2, 1.0984, 0>, .01
          < .3, 1.1065, 0>, .01
          < .4, 1.0863, 0>, .01
          < .5, 1.0519, 0>, .01
          < .6, 1.0438, 0>, .01
          < .7, 1.0641, 0>, .01
       texture {PinkAlabaster}
    }

// Spheres to mark monthly data points
sphere {  <-.8, 1.0337, 0>, .02 texture {PinkAlabaster}}
sphere {  <-.7, 1.0155, 0>, .02 texture {PinkAlabaster}}
sphere {  <-.6, 1.0074, 0>, .02 texture {PinkAlabaster}}
sphere {  <-.5, 1.0398, 0>, .02 texture {PinkAlabaster}}
sphere {  <-.4, 1.0196, 0>, .02 texture {PinkAlabaster}}
sphere {  <-.3, 1.0115, 0>, .02 texture {PinkAlabaster}}
sphere {  <-.2, 1.058 , 0>, .02 texture {PinkAlabaster}}
sphere {  <-.1, 1.058 , 0>, .02 texture {PinkAlabaster}}
sphere {  < .0, 1.0721, 0>, .02 texture {PinkAlabaster}}
sphere {  < .1, 1.0742, 0>, .02 texture {PinkAlabaster}}
sphere {  < .2, 1.0984, 0>, .02 texture {PinkAlabaster}}
sphere {  < .3, 1.1065, 0>, .02 texture {PinkAlabaster}}
sphere {  < .4, 1.0863, 0>, .02 texture {PinkAlabaster}}
sphere {  < .5, 1.0519, 0>, .02 texture {PinkAlabaster}}
sphere {  < .6, 1.0438, 0>, .02 texture {PinkAlabaster}}
sphere {  < .7, 1.0641, 0>, .02 texture {PinkAlabaster}}

// Line for California out-of-home placements
sphere_sweep {linear_spline 16,
          <-.8, 0.5581, 0>, .01
          <-.7, 0.5568, 0>, .01
          <-.6, 0.5586, 0>, .01
          <-.5, 0.5595, 0>, .01
          <-.4, 0.5585, 0>, .01
          <-.3, 0.5549, 0>, .01
          <-.2, 0.5537, 0>, .01
          <-.1, 0.5540, 0>, .01
          <  0, 0.5534, 0>, .01
          < .1, 0.5576, 0>, .01
          < .2, 0.5531, 0>, .01
          < .3, 0.5503, 0>, .01
          < .4, 0.5519, 0>, .01
          < .5, 0.5493, 0>, .01
          < .6, 0.5518, 0>, .01
          < .7, 0.5499, 0>, .01
       texture {Blue_Agate}
    }

 // boxes to mark monthly data points
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.8, 0.5581,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.7, 0.5568,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.6, 0.5586,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.5, 0.5595,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.4, 0.5585,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.3, 0.5549,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.2, 0.5537,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <-.1, 0.5540,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate <  0, 0.5534,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate < .1, 0.5576,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate < .2, 0.5531,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate < .3, 0.5503,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate < .4, 0.5519,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate < .5, 0.5493,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate < .6, 0.5518,
0> texture {Blue_Agate}}
box { <-1, -1, -1>, <1, 1, 1> scale 0.02 rotate y*45 translate < .7, 0.5499,
0> texture {Blue_Agate}}


// Vertical scale labels
 text {ttf "times.ttf","1.2", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 1.2 , 0 >}
 text {ttf "times.ttf","1.1", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 1.1 , 0 >}
 text {ttf "times.ttf","1.0", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 1.0 , 0 >}
 text {ttf "times.ttf","0.9", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.9 , 0 >}
 text {ttf "times.ttf","0.8", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.8 , 0 >}
 text {ttf "times.ttf","0.7", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.7 , 0 >}
 text {ttf "times.ttf","0.6", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.6 , 0 >}
 text {ttf "times.ttf","0.5", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.5 , 0 >}
 text {ttf "times.ttf","0.4", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.4 , 0 >}
 text {ttf "times.ttf","0.3", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.3 , 0 >}
 text {ttf "times.ttf","0.2", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.2 , 0 >}
 text {ttf "times.ttf","0.1", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.1 , 0 >}
 text {ttf "times.ttf","0.0", 0.5, 0 scale 0.05 texture {PinkAlabaster}
             translate <-0.9 , 0.0 , 0 >}

// Vertical scale lines
sphere_sweep {linear_spline 2, <-.81, 1.2, 0>, .002 < .71, 1.2, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 1.1, 0>, .002 < .71, 1.1, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 1.0, 0>, .002 < .71, 1.0, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.0, 0>, .002 < .71, 0.0, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.9, 0>, .002 < .71, 0.9, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.8, 0>, .002 < .71, 0.8, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.7, 0>, .002 < .71, 0.7, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.6, 0>, .002 < .71, 0.6, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.5, 0>, .002 < .71, 0.5, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.4, 0>, .002 < .71, 0.4, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.3, 0>, .002 < .71, 0.3, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.2, 0>, .002 < .71, 0.2, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.1, 0>, .002 < .71, 0.1, 0>, .002
texture {Blue_Agate}}
sphere_sweep {linear_spline 2, <-.81, 0.0, 0>, .002 < .71, 0.0, 0>, .002
texture {Blue_Agate}}

// Month labels ( x axis labels )
text {ttf "times.ttf","Jul-01", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.8-0.03 , -0.05 , 0 >}
text {ttf "times.ttf","Aug-01", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.7-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Sep-01", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.6-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Oct-01", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.5-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Nov-01", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.4-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Dec-01", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.3-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Jan-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.2-0.03 , -0.05 , 0 >}
text {ttf "times.ttf","Feb-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate <-0.1-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Mar-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.0-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Apr-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.1-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","May-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.2-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Jun-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.3-0.03 , -0.05 , 0 >}
text {ttf "times.ttf","Jul-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.4-0.03 , -0.05 , 0 >}
text {ttf "times.ttf","Aug-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.5-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Sep-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.6-0.04 , -0.05 , 0 >}
text {ttf "times.ttf","Oct-02", 0.5, 0 scale 0.03 texture {PinkAlabaster}
             translate < 0.7-0.04 , -0.05 , 0 >}

// X axis tick marks
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.8 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.7 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.6 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.5 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.4 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.3 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.2 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate <-0.1 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.0 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.1 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.2 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.3 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.4 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.5 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.6 , 0, 0 >}
cylinder { <0, 0, 0>, <0, 0.01, 0>, 0.002 texture {Blue_Agate}
             translate < 0.7 , 0, 0 >}
//linder { <0, 0, 0>, <0.007, 0, 0>, 0.002 texture {Blue_Agate}
//           translate < 0.8 , 0.005 , 0 >}






// Declare titles and labels
#declare MainTitle = text {ttf "times.ttf", "Out of Home Placements",
     1, 0  scale 0.10 texture {pigment{color rgb <1.9,1.2,0.15>}}}
#declare SubTitle  = text {ttf "times.ttf", "Butte County and California",
     1, 0 scale 0.06 texture {pigment{color rgb <1.2,1.1,0.05>}}}
#declare footnote  = text {ttf "timesi.ttf",
      "Source: California Department of Social Services, Research and
Development Division",
     1, 0 scale 0.025 texture {PinkAlabaster}}
#declare YLabel  = text {ttf "times.ttf", "Percent of Youth Population",
     1, 0 scale 0.045 texture {PinkAlabaster}}
#declare XLabel  = text {ttf "times.ttf", "",
     2, 0 scale 0.20 texture {PinkAlabaster}}
#declare ZLabel  = text {ttf "times.ttf", "",
     2, 0 scale 0.08 texture {PinkAlabaster}}

//==== Place text in the scene ====
 object {MainTitle translate -x*max_extent(MainTitle).x/2 translate <   0,
1.35, 0.2  > rotate x*-1}
 object {SubTitle  translate -x*max_extent(SubTitle ).x/2 translate <   0,
1.27, 0.23 > rotate x*-1}
 object {footnote  translate -x*max_extent(footnote ).x/2 translate
<-0.6,-0.10, 0.0  > rotate y*0}
 object {XLabel    translate -x*max_extent(XLabel   ).x/2 translate < 2.2, 0
,  0   > rotate y*10}
 object {YLabel    translate -x*max_extent(YLabel   ).x/2  rotate <-8,0,90>
translate < -0.95, 0.6,  0   >}
 object {ZLabel    translate -x*max_extent(ZLabel   ).x/2 translate <
0,-1.47,-4.5 > rotate x*5}




"Slime" <fak### [at] emailaddress> wrote in message
news:40cfdd60@news.povray.org...
> > Yes ..... But, if you could give the exactly source code of the
function,
> i
> > just have to run, it would help me to start ;o) Thanks you
>
> Well, the cylinder that I described is:
>
> cylinder {
> <-100,-100,-100>, // starting point
> <100,100,100>, // ending point
> 0.1 // radius
>
> pigment {rgb 1} // white
> }
>
> You'll also need a light source and a camera.
>
> If this is new to you, then I strongly suggest you read the tutorials that
> come with POV-Ray. Start by clicking on the button in POV-Ray that says
> "Scene", which will bring you to the help files.
>
>  - Slime
>  [ http://www.slimeland.com/ ]
>
>


Post a reply to this message

From: Harold
Subject: Re: show a line in 3D ?
Date: 16 Jun 2004 15:19:32
Message: <40d09d44$1@news.povray.org>
If you try to run that code it may not work because the
text has been wrapped.

For example, this should be on one line and commented
but the mail/news reader has put it on two lines:

-----------------
//text {ttf  "crystal.ttf",  str(l1P1,8,4), 2, 0 translate <-1,1,-2>
texture{White_Marble}}
----------------

To fix you'd need to put "//" before "texture{White_Marble}}"
so POV knows not to parse it as a script line.

H


Post a reply to this message

From: Shay
Subject: Re: show a line in 3D ?
Date: 17 Jun 2004 14:00:19
Message: <40d1dc33@news.povray.org>
"1ternaut" <ded### [at] sparkwirecom> wrote in message
news:40cfa078@news.povray.org...

Look in povray.text.scene-files for an example scene with documentation
references

 -Shay


Post a reply to this message

From:
Subject: Re: show a line in 3D ?
Date: 17 Jun 2004 21:50:37
Message: <40d24a6d$1@news.povray.org>
/*

Hi Harold,

you definitely should learn to use while loops,
arrays and macros; I don't think your chart script
is helpful for beginners.

Your code is very edit-unfriendly -- just try to
leave out the first three months and append three
new months at the end. In your script extensive
rearrangements would be required, in my version
below only the data arrays need to be changed.

Or assume you want other symbols for the blue
graph: this would require changing 16 textures.
In my code this is concentrated in a single place:
the declaration of Box, used in the statement
Sweep (CaliData, Box, Blue_Agate)

Of course much more could be done: automatic
adaption to the number of data points and the
number of graphs, automatic determination of the
range of the values and of nice min/max/stepsize
for the y-axis, automatic fitting to the aspect
ratio of the picture, ...

This whole post is a POV-Ray scene file -- just
render it at 800 by 600 with options
// +SP4 +EP4 +GD +A0.3 +AM2 +R3 -FN
to see an almost exact replica of your chart; then
change the macros and have fun!

I hope this didn't sound too rude, but as this was
offered as help to a beginner, I had to react ...

   Sputnik


*/

//=========BEGIN POV===============================
//--- POV Ray Line Chart Scene File --- 



global_settings { assumed_gamma 2.2 }
#include "colors.inc"
#include "textures.inc"
#include "shapes.inc"


// ---------- Data -----------

#declare ButteData = array [16] {
  1.0337,
  1.0155,
  1.0074,
  1.0398,
  1.0196,
  1.0115,
  1.058 ,
  1.058 ,
  1.0721,
  1.0742,
  1.0984,
  1.1065,
  1.0863,
  1.0519,
  1.0438,
  1.0641 }

#declare CaliData = array [16] {
  0.5581,
  0.5568,
  0.5586,
  0.5595,
  0.5585,
  0.5549,
  0.5537,
  0.5540,
  0.5534,
  0.5576,
  0.5531,
  0.5503,
  0.5519,
  0.5493,
  0.5518,
  0.5499 }

#declare Months = array [16] {
  "Jul-01",
  "Aug-01",
  "Sep-01",
  "Oct-01",
  "Nov-01",
  "Dec-01",
  "Jan-02",
  "Feb-02",
  "Mar-02",
  "Apr-02",
  "May-02",
  "Jun-02",
  "Jul-02",
  "Aug-02",
  "Sep-02",
  "Oct-02" }

// ---------- macro to draw a data line and symbols -----------

#macro Sweep (DataArray, Symbol, Tex)

  union {

    sphere_sweep {linear_spline 16,

      #local Index = 0;
      #while (Index<16)
        <Index/10-.8, DataArray[Index], 0>, .01
        #local Index = Index+1;
      #end//while
    }

    #local Index = 0;
    #while (Index<16)
      object { Symbol translate <Index/10-.8, DataArray[Index], 0> }
      #local Index = Index+1;
    #end//while

    texture {Tex}

  }

#end//macro Sweep


// ---------- untextured symbols for data points -----------

#declare Sphere = sphere { 0, 0.02 }

#declare Box = box { -0.02, 0.02 rotate y*45 }


// ---------- macro to draw vertical labels and lines -----------

#macro LabelsAndLines (LabelTex, LineTex)

  #local Index = 0;
  #while (Index<=12)

    text {ttf "times.ttf",str(Index/10,3,1), 0.5, 0
      scale 0.05
      texture {LabelTex}
      translate <-0.9, Index/10, 0 >
    }

    sphere_sweep {linear_spline 2,
      <-.81, Index/10, 0>, .002
      < .71, Index/10, 0>, .002
      texture {LineTex}
    }

    #local Index = Index+1;
  #end//while

#end//macro LabelsAndLines


// ---------- macro to make centered text -----------

#macro CenteredText (TTFFont, TextString, Thick)

  #local Txt = text {ttf TTFFont, TextString, Thick, 0 }
  #local Mid = max_extent(Txt)/2;

  object { Txt translate -Mid*x }

#end//macro CenteredText


// ---------- macro to draw months and x-ticks -----------

#macro MonthsAndTicks (MonthThick, MonthTex, TickTex)

  #local Index = 0;
  #while (Index<16)

    object { CenteredText ("times.ttf", Months[Index], MonthThick)
      scale 0.03
      texture {MonthTex}
      translate <Index/10-0.8, -0.05, 0>
    }

    cylinder { 0, 0.01*y, 0.002
      texture {TickTex}
      translate (Index/10-0.8)*x
    }

    #local Index = Index+1;
  #end//while

#end//macro LabelsAndLines


// ---------- Lights, Camera, Action -----------

//  Single camera
#declare Camx=-0.1;

 camera {location <Camx, 0.6, -3> look_at <Camx,0.6,0> angle 40}

 light_source { < 10,10,-40> color rgb <1,1,1> }
 light_source { <-30,20,-40> color rgb <0.75,0.75,0.75> }
 light_source { <0.5,10,-12> color rgb <0.55,0.55,0.55> }


background {Black}

// Un-comment the following lines to check parameter values,
//   put the name of the parameter after Str(
//text {ttf  "crystal.ttf",  str(l1P1,8,4), 2, 0 translate <-1,1,-2>
texture{White_Marble}}
//text {ttf  "crystal.ttf",  str(l1P2,8,4), 2, 0 translate <-1,0,-2>
texture{White_Marble}}
//text {ttf  "crystal.ttf",  str(l1P3,8,4), 2, 0 translate <-1,-1,-2>
texture{White_Marble}}

//#declare VertScale =  0.03658 ;


// draw it all (short, readable, editable, isn't it?)

Sweep (ButteData, Sphere, PinkAlabaster)
Sweep (CaliData, Box, Blue_Agate)
LabelsAndLines (PinkAlabaster, Blue_Agate)
MonthsAndTicks (0.5, PinkAlabaster, Blue_Agate)


object { CenteredText ("times.ttf", "Out of Home Placements", 1)
  scale 0.10
  texture {pigment{color rgb <1.9,1.2,0.15>}}
  translate <   0, 1.35, 0.2  >
  rotate x*-1 // why this?!?
}

object { CenteredText ("times.ttf", "Butte County and California", 1)
  scale 0.06
  texture {pigment{color rgb <1.2,1.1,0.05>}}
  translate <   0, 1.27, 0.23 >
  rotate x*-1
}

text {
  ttf "timesi.ttf",
  "Source: California Department of Social Services, Research and
Development Division",
  1, 0
  scale 0.025
  texture {PinkAlabaster}
  translate <-1.05, -0.1, 0>
}

object { CenteredText ("times.ttf", "", 2)
  scale 0.20
  texture {PinkAlabaster}
  translate 2.2*x
  rotate y*10
}

object { CenteredText ("times.ttf", "Percent of Youth Population", 1)
  scale 0.045
  texture {PinkAlabaster}
  rotate <-8,0,90>
  translate < -0.95, 0.6,  0   >
}

object { CenteredText ("times.ttf", "", 2)
  scale 0.08
  texture {PinkAlabaster}
  translate <0,-1.47,-4.5 >
  rotate x*5
}

// ========= That's all =================


Post a reply to this message

From: Richard Dybiec
Subject: Re: show a line in 3D ?
Date: 17 Jun 2004 22:59:50
Message: <40d25aa6@news.povray.org>
1ternaut wrote:
> newbe, I have just installed pov ray 3.6 and I seek has to visualize the
> line of coordonees x, y, z such as x=y=z somebody can he help me?
> I will need the textual file for "run";o)
> 
> 
Here's a simple 3d coordinate symbol; you'll need to change the colors 
to something that 's on your system.

//xyz coordinates symbol
//d = diam of 'lines'
//l = length of leg from origin
#macro coordSys(d,l)
   union {
     cylinder {
       <-l,0,0>,<l,0,0>,d
       texture {
         pigment {color lightRed} finish {flat} //xline
       }
     }
   cylinder {
     <0,-l,0>,<0,l,0>,d
     texture {
       pigment {color lightGreen} finish {flat} //yline
     }
   }
   cylinder {
     <0,0,-l>,<0,0,l>,d
     texture {
       pigment {color lightBlue} finish {flat} //zline
     }
   }
}
#end


Post a reply to this message

From: Harold
Subject: Re: show a line in 3D ?
Date: 18 Jun 2004 15:20:16
Message: <40d34070$1@news.povray.org>
Wow, thanks Sputnik!
Yeah, I know it is awful POV code. Probably shouldn't
have shared it.

H


news:40d24a6d$1@news.povray.org...
> /*
>
> Hi Harold,
>
> you definitely should learn to use while loops,
> arrays and macros; I don't think your chart script
> is helpful for beginners.
>
> Your code is very edit-unfriendly -- just try to
> leave out the first three months and append three
> new months at the end. In your script extensive
> rearrangements would be required, in my version
> below only the data arrays need to be changed.
>
> Or assume you want other symbols for the blue
> graph: this would require changing 16 textures.
> In my code this is concentrated in a single place:
> the declaration of Box, used in the statement
> Sweep (CaliData, Box, Blue_Agate)
>
> Of course much more could be done: automatic
> adaption to the number of data points and the
> number of graphs, automatic determination of the
> range of the values and of nice min/max/stepsize
> for the y-axis, automatic fitting to the aspect
> ratio of the picture, ...
>
> This whole post is a POV-Ray scene file -- just
> render it at 800 by 600 with options
> // +SP4 +EP4 +GD +A0.3 +AM2 +R3 -FN
> to see an almost exact replica of your chart; then
> change the macros and have fun!
>
> I hope this didn't sound too rude, but as this was
> offered as help to a beginner, I had to react ...
>
>    Sputnik
>
>
> */
>
> //=========BEGIN POV===============================
> //--- POV Ray Line Chart Scene File --- 


>
> global_settings { assumed_gamma 2.2 }
> #include "colors.inc"
> #include "textures.inc"
> #include "shapes.inc"
>
>
> // ---------- Data -----------
>
> #declare ButteData = array [16] {
>   1.0337,
>   1.0155,
>   1.0074,
>   1.0398,
>   1.0196,
>   1.0115,
>   1.058 ,
>   1.058 ,
>   1.0721,
>   1.0742,
>   1.0984,
>   1.1065,
>   1.0863,
>   1.0519,
>   1.0438,
>   1.0641 }
>
> #declare CaliData = array [16] {
>   0.5581,
>   0.5568,
>   0.5586,
>   0.5595,
>   0.5585,
>   0.5549,
>   0.5537,
>   0.5540,
>   0.5534,
>   0.5576,
>   0.5531,
>   0.5503,
>   0.5519,
>   0.5493,
>   0.5518,
>   0.5499 }
>
> #declare Months = array [16] {
>   "Jul-01",
>   "Aug-01",
>   "Sep-01",
>   "Oct-01",
>   "Nov-01",
>   "Dec-01",
>   "Jan-02",
>   "Feb-02",
>   "Mar-02",
>   "Apr-02",
>   "May-02",
>   "Jun-02",
>   "Jul-02",
>   "Aug-02",
>   "Sep-02",
>   "Oct-02" }
>
> // ---------- macro to draw a data line and symbols -----------
>
> #macro Sweep (DataArray, Symbol, Tex)
>
>   union {
>
>     sphere_sweep {linear_spline 16,
>
>       #local Index = 0;
>       #while (Index<16)
>         <Index/10-.8, DataArray[Index], 0>, .01
>         #local Index = Index+1;
>       #end//while
>     }
>
>     #local Index = 0;
>     #while (Index<16)
>       object { Symbol translate <Index/10-.8, DataArray[Index], 0> }
>       #local Index = Index+1;
>     #end//while
>
>     texture {Tex}
>
>   }
>
> #end//macro Sweep
>
>
> // ---------- untextured symbols for data points -----------
>
> #declare Sphere = sphere { 0, 0.02 }
>
> #declare Box = box { -0.02, 0.02 rotate y*45 }
>
>
> // ---------- macro to draw vertical labels and lines -----------
>
> #macro LabelsAndLines (LabelTex, LineTex)
>
>   #local Index = 0;
>   #while (Index<=12)
>
>     text {ttf "times.ttf",str(Index/10,3,1), 0.5, 0
>       scale 0.05
>       texture {LabelTex}
>       translate <-0.9, Index/10, 0 >
>     }
>
>     sphere_sweep {linear_spline 2,
>       <-.81, Index/10, 0>, .002
>       < .71, Index/10, 0>, .002
>       texture {LineTex}
>     }
>
>     #local Index = Index+1;
>   #end//while
>
> #end//macro LabelsAndLines
>
>
> // ---------- macro to make centered text -----------
>
> #macro CenteredText (TTFFont, TextString, Thick)
>
>   #local Txt = text {ttf TTFFont, TextString, Thick, 0 }
>   #local Mid = max_extent(Txt)/2;
>
>   object { Txt translate -Mid*x }
>
> #end//macro CenteredText
>
>
> // ---------- macro to draw months and x-ticks -----------
>
> #macro MonthsAndTicks (MonthThick, MonthTex, TickTex)
>
>   #local Index = 0;
>   #while (Index<16)
>
>     object { CenteredText ("times.ttf", Months[Index], MonthThick)
>       scale 0.03
>       texture {MonthTex}
>       translate <Index/10-0.8, -0.05, 0>
>     }
>
>     cylinder { 0, 0.01*y, 0.002
>       texture {TickTex}
>       translate (Index/10-0.8)*x
>     }
>
>     #local Index = Index+1;
>   #end//while
>
> #end//macro LabelsAndLines
>
>
> // ---------- Lights, Camera, Action -----------
>
> //  Single camera
> #declare Camx=-0.1;
>
>  camera {location <Camx, 0.6, -3> look_at <Camx,0.6,0> angle 40}
>
>  light_source { < 10,10,-40> color rgb <1,1,1> }
>  light_source { <-30,20,-40> color rgb <0.75,0.75,0.75> }
>  light_source { <0.5,10,-12> color rgb <0.55,0.55,0.55> }
>
>
> background {Black}
>
> // Un-comment the following lines to check parameter values,
> //   put the name of the parameter after Str(
> //text {ttf  "crystal.ttf",  str(l1P1,8,4), 2, 0 translate <-1,1,-2>
> texture{White_Marble}}
> //text {ttf  "crystal.ttf",  str(l1P2,8,4), 2, 0 translate <-1,0,-2>
> texture{White_Marble}}
> //text {ttf  "crystal.ttf",  str(l1P3,8,4), 2, 0 translate <-1,-1,-2>
> texture{White_Marble}}
>
> //#declare VertScale =  0.03658 ;
>
>
> // draw it all (short, readable, editable, isn't it?)
>
> Sweep (ButteData, Sphere, PinkAlabaster)
> Sweep (CaliData, Box, Blue_Agate)
> LabelsAndLines (PinkAlabaster, Blue_Agate)
> MonthsAndTicks (0.5, PinkAlabaster, Blue_Agate)
>
>
> object { CenteredText ("times.ttf", "Out of Home Placements", 1)
>   scale 0.10
>   texture {pigment{color rgb <1.9,1.2,0.15>}}
>   translate <   0, 1.35, 0.2  >
>   rotate x*-1 // why this?!?
> }
>
> object { CenteredText ("times.ttf", "Butte County and California", 1)
>   scale 0.06
>   texture {pigment{color rgb <1.2,1.1,0.05>}}
>   translate <   0, 1.27, 0.23 >
>   rotate x*-1
> }
>
> text {
>   ttf "timesi.ttf",
>   "Source: California Department of Social Services, Research and
> Development Division",
>   1, 0
>   scale 0.025
>   texture {PinkAlabaster}
>   translate <-1.05, -0.1, 0>
> }
>
> object { CenteredText ("times.ttf", "", 2)
>   scale 0.20
>   texture {PinkAlabaster}
>   translate 2.2*x
>   rotate y*10
> }
>
> object { CenteredText ("times.ttf", "Percent of Youth Population", 1)
>   scale 0.045
>   texture {PinkAlabaster}
>   rotate <-8,0,90>
>   translate < -0.95, 0.6,  0   >
> }
>
> object { CenteredText ("times.ttf", "", 2)
>   scale 0.08
>   texture {PinkAlabaster}
>   translate <0,-1.47,-4.5 >
>   rotate x*5
> }
>
> // ========= That's all =================
>
>


Post a reply to this message

From: Harold
Subject: Re: show a line in 3D ?
Date: 18 Jun 2004 15:47:18
Message: <40d346c6@news.povray.org>
Sputnik,

On second thought, my dumb "brute force" POV code
might be good for a beginner if he or she is not a programmer.
Just as a starter, then he/she can learn good programming
technique.

Of course, the contrast of the two scripts can be very
enlightening :-) . I much appreciate your modifications,
they will help me improve my code.

h


Post a reply to this message

From: Harold
Subject: Re: show a line in 3D ?
Date: 18 Jun 2004 18:05:25
Message: <40d36725$1@news.povray.org>
Shay,

Why orthographic rather than perspective? I note that the equivalent
render in a perspective camera would use an angle of 9.5. I guess
I've never understood the advantage of orthographic cameras, as
perspective seems to more closely approximate the human eye.

My take on using POV to graph in 3D is to use perspective,
since other graphics systems can give you a flat image.

H

"Shay" <rrr.rrr.r> wrote in message news:40d1dc33@news.povray.org...
>
> "1ternaut" <ded### [at] sparkwirecom> wrote in message
> news:40cfa078@news.povray.org...
>
> Look in povray.text.scene-files for an example scene with documentation
> references
>
>  -Shay
>
>


Post a reply to this message

From: Alain
Subject: Re: show a line in 3D ?
Date: 19 Jun 2004 11:28:08
Message: <40d45b88$1@news.povray.org>
Harold nous apporta ses lumieres ainsi en ce 18/06/2004 18:05... :

>Shay,
>
>Why orthographic rather than perspective?
>
When you don't want perspective, like if you want to simulate an 
extreeme focal lenght. Usefull for technical renders and for placing 
some elements.
It's all a mather of choices, preferences, situations and needs.

Alain


Post a reply to this message

From: Shay
Subject: Re: show a line in 3D ?
Date: 19 Jun 2004 11:36:39
Message: <40d45d87@news.povray.org>
Alain wrote:


> When you don't want perspective, like if you want to
> simulate an extreeme focal lenght. Usefull for
> technical renders and for placing  some elements.
> It's all a matter of choices, preferences,
> situations and needs. 

Yes, Harold, "placing some elements" was my consideration here. I wanted to
allow flexibility in camera placement without adding more complex (to a
beginner) code to ensure that the text labels were visible.

 -Shay


Post a reply to this message

<<< Previous 5 Messages Goto Initial 10 Messages

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.