#!/usr/bin/perl

$flnm = $ARGV[0];

open(ROUTE, $flnm);
$n = -1;
while(<>) {
    @pcs = split(' ',$_);
    if ($#pcs < 2) { break; }
    $n++;
    $Coord[$n][0] = $pcs[0];
    $Coord[$n][1] = $pcs[1];
    $Coord[$n][2] = $pcs[2];
}

print "Number of points to consider : $n\n";


$dist = 0.0;
$angle[0] = 0.0;
for ($i=0; $i<$n; $i++) {
    $x1 = $Coord[$i][0]-$Coord[$i+1][0];
    $y1 = $Coord[$i][1]-$Coord[$i+1][1];
    $z1 = $Coord[$i][2]-$Coord[$i+1][2];
    $sum = sqrt($x1*$x1 + $y1*$y1 + $z1*$z1);
    $dist += $sum;
    $x = -$x1/$sum;
    $y = $y1/$sum;
    $z = $z1/$sum;
    if ($x >= 0.0 && $z >= 0.0) { $angle[$i+1] = -1.57 + $z * 1.57; }
    if ($x <= 0.0 && $z >= 0.0) { $angle[$i+1] = 1.57 - $z * 1.57; }
    if ($x <= 0.0 && $z <= 0.0) { $angle[$i+1] = 1.57 - $z * 1.57; }
    if ($x >= 0.0 && $z <= 0.0) { $angle[$i+1] = 3.14 + (1+$z) * 1.57; }
}

$sum=0.0;
print "\n key [";
print "0.0, ";
for ($i=0; $i<$n; $i++) {
    $x1 = $Coord[$i][0]-$Coord[$i+1][0];
    $y1 = $Coord[$i][1]-$Coord[$i+1][1];
    $z1 = $Coord[$i][2]-$Coord[$i+1][2];
    $sum += sqrt($x1*$x1 + $y1*$y1 + $z1*$z1);
    $frac = $sum/$dist;
    print "$frac, ";
}
print "]\n\n keyValue [\n";
for ($i=0; $i<=$n; $i++) {
    print "$Coord[$i+1][0] $Coord[$i+1][1] $Coord[$i+1][2],\n";
}
print "]\n\n keyValue [\n";
for ($i=0; $i<=$n; $i++) {
    print "0 1 0 $angle[$i],\n";
}
print "]\n";

