#!/usr/bin/perl # fix Cerium xml normal vector my $i = -1; my (@x,@y,@z); my @cord; my $fix = 1; sub v { print "$x[0] $y[0] $z[0]\n"; print "$x[1] $y[1] $z[1]\n"; print "$x[2] $y[2] $z[2]\n"; } sub outer { my ($ax,$ay,$az) = ( $x[1]-$x[0], $y[1]-$y[0], $z[1]-$z[0], ); my ($bx,$by,$bz) = ( $x[2]-$x[0], $y[2]-$y[0], $z[2]-$z[0], ); my ($ox,$oy,$oz) = ( $ay*$bz - $az*$by, -$ax*$bz + $az*$bx, $ax*$by - $ay*$bx, ); my($r) = sqrt($ox*$ox+$oy*$oy+$oz*$oz); ($ox,$oy,$oz) = ($ox/$r,$oy/$r,$oz/$r); push(@cord, [$ox,$oy,$oz]); # print " $ox $oy $oz\n"; } while(<>) { if (! $fix) { if (/[0] $cord->[1] $cord->[2] \n"; print " $cord->[0] $cord->[1] $cord->[2] \n"; print " $cord->[0] $cord->[1] $cord->[2] \n"; } else { print "outer $i $cord->[0] $cord->[1] $cord->[2] \n"; print ; } $i = -2; } else { $i--; } next; } print if ($fix); if (/<\/coord/) { $i = -1; next; } if (/