On 19/01/2024 19:43, Nicolas George wrote:
kurtz le pirate , dans le message
<65aa3fbf$0$2586$426a34cc@news.free.fr>, a écrit :
J'ai fais du propre et un programme avec le sctrict minimum.
Et toujours le même souci :(
Pouvez-vous montrer ce programme ?
# ----------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use warnings;
use File::Basename;
use Data::Dumper;
# --- 2024-01-15
# ----------------------------------------------------------------------
my $i;
my @vertex;
my @faces;
my @line;
# ----------------------------------------------------------------------
my $fullPath = shift;
my ($name, $dir, $ext) = fileparse($fullPath,'\..*');
printf ("name = $name\n");
printf ("dir = $dir\n");
printf ("ext = $ext\n\n");
chdir ($dir) or die "chdir error : $!\n";
# ----------------------------------------------------------------------
my $sourceFile="$name$ext";
print "* In file : $sourceFile\n\n";
my $povFile = $sourceFile;
$povFile = "$name.inc";
print "* Out file : $povFile\n\n";
# ----------------------------------------------------------------------
# push fake element to avoid zero' element
push @vertex,[-1,-1,-1];
# ----------------------------------------------------------------------
open (SOURCE,"<",$sourceFile) or die "Input file - Error openning
$sourceFile : $! !\n";
while(<SOURCE>) {
if( /^v/) {
# sample : v 4.29289322 -0.70710678 0.0000000e+0
@line = split ' ';
push @vertex,[$line[1],$line[2],$line[3]];
}
if( /^f/) {
# sample : f 527/598 528/600 331/368 330/366
# split on space
@line = split ' ';
print "1:";
print join("|", @line),"\nDumper:\n";
print Dumper @line;
# remove first item : 'f'
shift(@line);
print "2:";
print join("|", @line),"\nDumper:\n";
print Dumper @line;
# split on slash for all element of @line
@line = map { [split /\//] } @line;
print "3:";
print join("|", @line),"\nDumper:\n";
print Dumper @line;
# add array into array
push @faces, [@line];
}
print "---\n";
}
close (SOURCE);
exit(0);
print "\n\n\n*** Dumper \@faces\n";
print Dumper @faces;
print "\n\n\n";
print "\n\n\n*** loop \@faces\n";
for my $i ( 0 .. $#faces ) {
for my $j ( 0 .. $#{$faces[$i]} ) {
print "faces[$i,$j] = $faces[$i][$j]\n";
}
}
print "\n\n\n*** loop \@vertex\n";
for my $i ( 0 .. $#vertex ) {
for my $j ( 0 .. $#{$vertex[$i]} ) {
print "vertex[$i,$j] = $vertex[$i][$j]\n";
}
}
# ----------------------------------------------------------------------
Et le fichier de données :
# WaveFront *.obj file
g Lathe_NURBS
usemtl Mat
v 36.172029 288.758429 0
v 26.171929 288.758429 0
v 26.171929 285.758429 0
f 198/216 199/218 2/3 1/1
f 198/216 199/218 2/3
-- kurtz le piratecompagnie de la banquise