#!/usr/local/bin/perl $zmin=9e99;$zmax=-9e99; $ymin=9e99;$ymax=-9e99; printf stderr "Reading Data\n"; $maxset=70; while(<>){ $i++; ($p, $f{1}, $f{2}, $f{3}, $f{4}, $f{5}, $f{6}, $f{7}, $f{8}, $f{9}, $f{10},$f{11},$f{12},$f{13},$f{14},$f{15},$f{16},$f{17},$f{18},$f{19}, $f{20},$f{21},$f{22},$f{23},$f{24},$f{25},$f{26},$f{27},$f{28},$f{29}, $f{30},$f{31},$f{32},$f{33},$f{34},$f{35},$f{36},$f{37},$f{38},$f{39}, $f{40},$f{41},$f{42},$f{43},$f{44},$f{45},$f{46},$f{47},$f{48},$f{49}, $f{50},$f{51},$f{52},$f{53},$f{54},$f{55},$f{56},$f{57},$f{58},$f{59}, $f{60},$f{61},$f{62},$f{63},$f{64},$f{65},$f{66},$f{67},$f{68},$f{69}, $f{70}, @r) =split(' ',$_); $yarray{$i} =$yarray{$i} +$p; for ($j = 1; $j <= $maxset; $j++) { if($f{$j}){ if($j >= $xlast){$xlast=$j;} $zarray{$j,$i}=$f{$j}; } } } $ylast=$i; printf stderr "Calculating min/max/factors for "; printf stderr "$ylast sets and $xlast values/set\n"; for ($j = 1; $j <= $ylast; $j++) { if($yarray{$j} < $ymin) {$ymin = $yarray{$j};} if($yarray{$j} > $ymax) {$ymax = $yarray{$j};} for ($k = 1; $k <= $xlast; $k++) { if($zarray{$k,$j} < $zmin) {$zmin = $zarray{$k,$j};} if($zarray{$k,$j} > $zmax) {$zmax = $zarray{$k,$j};} } } $zfact = ($zmax-$zmin); if($zfact == 0.0) {$zmin = $zmax - 1.0;} $zfact = 1/($zmax-$zmin); printf stderr "zmin = %.5f\tzmax = %.5f\tzfact = %.5f\n",$zmin,$zmax,$zfact; $yfact = ($ymax-$ymin); if($yfact == 0.0) {$ymin = $ymax - 1.0;} $yfact = 1/($ymax-$ymin); printf stderr "ymin = %.5f\tymax = %.5f\tyfact = %.5f\n",$ymin,$ymax,$yfact; # creating object printf "#VRML V1.0 ascii\n\n"; printf "Separator {\n\n"; for ($k = 1; $k < $ylast; $k++) { printf stderr "Set #$k\n"; $y1=($k-1)/$ylast; $y2=$k/$ylast; $colory=$colory+0.05; $colorx=0; for ($j = 1; $j < $xlast; $j++) { $x1=($j-1)/$xlast; $x2=$j/$xlast; $colorx=$colorx+0.05; printf " Material { emissiveColor %s 0.0 %s }\n",$colorx,$colory; # printf stderr " $k $j %e %e %e %e\n",$x1,$x2,$y1,$y2; printf " Coordinate3 {\n"; printf " point [\n"; printf " %e %e %e,\n",$x1,$y1,($zarray{$j ,$k }-$zmin)*$zfact; printf " %e %e %e,\n",$x2,$y1,($zarray{$j+1,$k }-$zmin)*$zfact; printf " %e %e %e,\n",$x2,$y2,($zarray{$j+1,$k+1}-$zmin)*$zfact; printf " %e %e %e \n",$x1,$y2,($zarray{$j ,$k+1}-$zmin)*$zfact; printf " ]\n"; printf " }\n"; printf " IndexedFaceSet {\n"; printf " coordIndex [ 0, 1, 2, 3, -1 ]\n"; printf " }\n"; } } printf "}\n";