Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [perl] errore array

  1. #1

    [perl] errore array

    Ciao a tutti..
    qualcuno mi saprebbe dire come mai ho questo tipo di errore??

    Can't use string ("14.6666666666667") as an ARRAY ref while "strict refs" in use at C:/Programmi/Perl/site/lib/Math/Geometry/Planar.pm line 367.

    il codice interessato è questo:
    codice:
    	for ($h=0;$h<=10;$h++){
    		push(@array_tmp,$xy_result[$h]->[0],$xy_result[$h]->[1],$xy_result[$h]->[2],$xy_result[$h]->[3]);
    	}
    
    	$p_intersezione=$polygon->points(@array_tmp);
    	$poly_intersezione=$contour->polygons([$p_result]);
    many tahanks....
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  2. #2
    qual'è esattamente la riga 367?
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  3. #3
    In pratica preso pari pari dal pm per l'utilizzo di $

    $p_intersezione=$polygon->points(@array_tmp);
    $poly_intersezione=$contour->polygons([$p_intersezione]);

    codice:
    $points = [[$x1,$y1],[$x2,$y2], ... ];
     $polygon->points($points);                    # assign points to polygon object
     $points1 = [[$x1,$y1],[$x2,$y2], ... ];
     $points2 = [[ax1,by1],[ax2,by2], ... ];
     $contour->polygons([$points1,$points2, ...]); # assign polgyons to contour object
    E' come se poly_intersezione non contenesse niente...
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  4. #4
    ribadisco la richiesta... qual'è la riga 367 del file Planar.pm?
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  5. #5
    ops me l'ero dimenticata:

    codice:
    # returns vector cross product of vectors p1p2 and p1p3
    # using Cramer's rule
    #
    # args : reference to an array with 3 points p1,p2 and p3
    #
    sub CrossProduct {
      my $pointsref = $_[0];
      my @points = @$pointsref;
      if (@points != 3) {
        carp("Need 3 points for a cross product");
        return;
      }
      my @p1 = @{$points[0]};   <-linea 367
      my @p2 = @{$points[1]};
      my @p3 = @{$points[2]};
      my $det_p2p3 = &Determinant($p2[0], $p2[1], $p3[0], $p3[1]);
      my $det_p1p3 = &Determinant($p1[0], $p1[1], $p3[0], $p3[1]);
      my $det_p1p2 = &Determinant($p1[0], $p1[1], $p2[0], $p2[1]);
      return ($det_p2p3-$det_p1p3+$det_p1p2);
    }
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  6. #6
    prova a inserire sopra la riga 367 la seguente:

    no strict 'refs';

    e controlla se ti ancora errore.

    questa non può essere la soluzione ma può dare indicazioni.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  7. #7
    Allora, forse ho individuato dove sta il problema:

    in pratica $polygon->points($points); dovrebbe costruire il perimetro di un poligono con i punti passati in argomento,
    ho fatto un po di prove:

    $points = [[1,1],[2,2],[2,1]];
    $p_intersezione=$polygon->points($points);

    funziona e non da errore, ma se faccio:

    for ($h=0;$h<=10;$h++){
    push(@array_tmp,$xy_result[$h]->[0],$xy_result[$h]->[1]);
    }
    $p_intersezione=$polygon->points(\@array_tmp);

    errore.... come posso ovviare al problema??
    grazie ancora...
    My SO:WinXP pro/Linux Debian/Gentoo 2006.0

  8. #8
    dal poco codice che c'è non capisco benissimo la natura dei vari elementi.

    intanto fai la prova che ti ho detto, poi prova anche:

    $p_intersezione=$polygon->points([@array_tmp]);
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.