POV-Ray : Newsgroups : povray.general : input/output file : Re: input/output file Server Time
30 Jul 2024 04:16:14 EDT (-0400)
  Re: input/output file  
From: Thomas de Groot
Date: 16 Oct 2009 10:13:23
Message: <4ad87f83$1@news.povray.org>
"esterichia" <est### [at] gmailcom> schreef in bericht 
news:web.4ad872742aad556549aa3f520@news.povray.org...
>I would like to read data (float or vectors of float) from an ascii file 
>and use
> the data as coordinates for the geometry in the scene: some spheres 
> connected by
> cylinders.
>
> I tried with the following code and an input file with a sequence of 
> floats.
> The problem is that some data in the input file are not read (I checked 
> with the
> #write): sometimes every second float is read, sometimes there is no 
> regular
> pattern. Moreover, sometimes the minus sign is not read.
> (I got a similar error with vectors of floats)
>
> Am I doing something wrong or is there a bug in the I/O functions?
>
> I'm using povray-3.6.1-12 on ubuntu 9.04 but I get the same error in 
> windows
> both with 3.6.1 and 3.6.2.
>
> Thanks
> Ester
>
> #fopen inputfile "in.dat" read
> //#fopen outputfile "out.dat" write
>
>  #if (defined(inputfile))
>    #read (inputfile, y1, y2, y3)
>  #end
>
>  #while (defined(inputfile))
>    #declare x1 = y1;
>    #declare x2 = y2;
>    #declare x3 = y3;
>
>    #read (inputfile, y1,y2,y3)
>
>    sphere { <x1,x2,x3>, 0.3  pigment {color Green}}
>    #if (!(x1 = y1 & x2 = y2 & x3 = y3))
>      cylinder { <x1,x2,x3>, <y1,y2,y3>, 0.1 pigment {color Red}}
>    #end
>
> //    #write (outputfile, x1, " ", x2, " ", x3, "\n")
>  #end
>
> #fclose inputfile
> //#fclose outputfile
>

I think commas are missing in the write statement because they are needed to 
separate the written parameters in the file in order to be read correctly. 
Check that your input file has commas too between parametersAlso you can 
simplify your define as you do not need the #if statement. Just write:

#while (defined(inputfile))
  #declare x1 = y1;
  #declare x2 = y2;
  #declare x3 = y3;
  #read (inputfile, y1, y2, y3)
  ....
  ....
  #write (outputfile, x1,", ", x2,", ", x3,",","\n")
  ....
#end

Hope this helps.

Thomas


Post a reply to this message

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