Thread Previous • Date Previous • Date Next • Thread Next |
Peter Toft wrote:
Jeg har en CAD-lignende opgave, som jeg ved kan løses på Linux :) Jeg har en række x,y koordinater til nogle hjørnepunkter i et areal. (12212.0,2123.0) (23233.0,34.0) .... (2323.,4556.0) Jeg vil gerne have mulighed for at kyle alle mine koordinater ind, ogderefter sige at mit areal er defineret af følgende trekanter (som anvender mine x,y koordinater ovenfor)punkt 1, 2 og 3 punkt 2, 4 og 6og så skal programmet give mig det samlede areal af alle de trekanter der ligger i min figur.Det tager to-tre timer at lave, men det må næsten findes i forvejen....
Lidt perlgymnastik kan måske bruges? #!/usr/bin/perl open(KOORDINATER, "koord.dat") or die; while($linie = <KOORDINATER>) { chomp($linie); if($linie =~ /\s*\(([0-9\.\+\-e]+),([0-9\.\+\-e]+)\)/) { push @xkoord, $1; push @ykoord, $2; } } $totalareal = 0.0; open(INDICES, "indices.dat") or die; while($linie = <INDICES>) { chomp($linie); if($linie =~ /^(\d+)\s+(\d+)\s+(\d+)$/) { $x1 = $xkoord[$1-1]; $y1 = $ykoord[$1-1]; $x2 = $xkoord[$2-1]; $y2 = $ykoord[$2-1]; $x3 = $xkoord[$3-1]; $y3 = $ykoord[$3-1];$areal = abs(0.5*(-$x2*$y1 + $x3*$y1 + $x1*$y2 - $x3*$y2 - $x1*$y3 +$x2*$y3));
$totalareal += $areal; } } print "Totalareal: $totalareal\n"; Regexp'erne skal måske skrives lidt om... Mogens -- Mogens Kjær, Dataarkæolog Email: mk@xxxxxxxxxxxxx Homepage: http://www.datamuseum.dk
Thread Previous • Date Previous • Date Next • Thread Next |