| 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 |