Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Re: Re: build array of geometry data

by MZSanford (Curate)
on Feb 10, 2003 at 16:17 UTC ( [id://234157]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: build array of geometry data
in thread build array of geometry data

I am unsure what you mean about changing the data. While i am not quite clear on that, i do understand you want to save each array of numbers seperatly. To accomplish this, i used an Array of Arrays. The code is listed below (it is untested) :

#!/usr/bin/perl my $string; { $/ = undef; $string = <DATA>; } my @collection; while ($string =~ m!\[\s*([^]]+)\]!g) { my @nums = split(/\s+/,$1); print "Array : ",join(',',@nums),"\n"; push(@collection,\@nums); } ## Now, i have an array or arrays, like : # # @collection = ( # [1,1,1,...], # [4,4,4,...], # [123,123,123,123,...], # [-1,1,1,1,1,...], # ) print "nloops : ",join(',',@{$collection[0]}),"\n"; print "lverts : ",join(',',@{$collection[1]}),"\n"; print "vertid : ",join(',',@{$collection[2]}),"\n"; print "params : ",join(',',@{$collection[3]}),"\n"; __DATA__ [1 1 1 1 1 1 ][4 4 4 4 4 4] [ 123 123 123 123 123 123 123 123 123 ] "P" [ -1 1 1 1 1 -1 1 1 1 ]

I do not understand what you wrote about changing the data, but from what i posted i think you should be able to work out the seperate array issue which should put you well on your way.


from the frivolous to the serious

Replies are listed 'Best First'.
Re: Re: Re: Re: build array of geometry data
by Frippe (Acolyte) on Feb 10, 2003 at 19:37 UTC
    Thanks, maybe it me but I use ex. my @nloops = join(',',@{$collection[0]}); and try print @nloops[1] OUT [1,1,1,1,1] but the correct should be 1 To make this little test a more clear view from my part as you could see there are 4 array in the renderman rib ex. for ($i = 0; $i < array_length; $i ++ ) { print @params[0+$i] @params[1+$i] @params[2+$i] 1; } this would be output: -1 1 1 1 1 -1 1 1 1 ... next I apply a custom string in print "Run $count_lvert_length Poly\n"; for ($i = 0; $i < count_lverts*4; $i += 4 ) { if ( $lverts[0+($i/4)] == 3 ) { print "$lverts[0+($i/4)] < $vertid[2+$i] $vertid[1+$i] $vertid[0+$i]\n"; } else { print "$lverts[0+($i/4)] < $vertid[3+$i] $vertid[2+$i] $vertid[1+$i] $vertid[0+$i]\n"; } } append the end line !!! ---------------------------------- here is the 'renderman' rib example this file this what I read in and like to get data from # Starting polys PointsGeneralPolygons [1 1 1 1 1 1] [4 4 4 4 4 4] [ 0 4 5 1 1 5 6 2 2 6 7 3 3 7 4 0 3 0 1 2 4 7 6 5 ] "P" [ -0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 0.5 -0.5 0.5 0.5 ] # Starting curves # Done curves --------------------------- and this is the code I trying to get Perl to make for me !!! -0.5 -0.5 -0.5 1 0.5 -0.5 -0.5 1 0.5 -0.5 0.5 1 -0.5 -0.5 0.5 1 -0.5 0.5 -0.5 1 0.5 0.5 -0.5 1 0.5 0.5 0.5 1 -0.5 0.5 0.5 1 Run 6 Poly 4 < 1 5 4 0 4 < 2 6 5 1 4 < 3 7 6 2 4 < 0 4 7 3 4 < 2 1 0 3 4 < 5 6 7 4 regards, Fredrik Gustafsson
      my @nloops = join(',',@{$collection[0]}); and try
      print @nloops[1] OUT
      [1,1,1,1,1]
      but the correct should be

      1

      Actually, there is nothing in @nloops[1]. It's not defined. join returns a scalar. Setting a scalar to @nloops places the scalar in $nloop[0].

      What you probably wanted to do is:

      my @nloops = @{ $collection[0] };

      Now @nloops contains a list of values. $nloops[0] now contains 1.




      HTH,
      Charles K. Clarkson
      Clarkson Energy Homes, Inc.
Re: Re: Re: Re: build array of geometry data
by Frippe (Acolyte) on Feb 10, 2003 at 19:55 UTC
    hi I'm not sure my message was send correct !!! here is the 'renderman' rib file. ----------------------------------- # Starting polys PointsGeneralPolygons [1 1 1 1 1 1] [4 4 4 4 4 4] [ 0 4 5 1 1 5 6 2 2 6 7 3 3 7 4 0 3 0 1 2 4 7 6 5 ] "P" [ -0.5 -0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 -0.5 0.5 0.5 -0.5 0.5 0.5 0.5 -0.5 0.5 0.5 ] # Starting curves # Done curves ------------------------------ and here is the code I like Perl to do for me. ------------------------------------------- -0.5 -0.5 -0.5 1 0.5 -0.5 -0.5 1 0.5 -0.5 0.5 1 -0.5 -0.5 0.5 1 -0.5 0.5 -0.5 1 0.5 0.5 -0.5 1 0.5 0.5 0.5 1 -0.5 0.5 0.5 1 Run 6 Poly 4 < 1 5 4 0 4 < 2 6 5 1 4 < 3 7 6 2 4 < 0 4 7 3 4 < 2 1 0 3 4 < 5 6 7 4 ------------------------------------- regards, Fredrik Gustafsson

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://234157]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2024-04-19 14:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found