chiark / gitweb /
interpolates but not very well
[moebius2.git] / library.pl
index cb7a59b42f0689cd1984c28676c27be11a4923cf..d95f61932a55aa69f12e9b93786e3e7a806aaeb8 100644 (file)
@@ -3,21 +3,34 @@ sub run ($) {
     $!=0; system($_[0]); die "$! $?" if $! or $?;
 }
 
+sub initdata_process_prime() {
+    my ($i,$fmt);
+    open P, "$prime" or die $!;
+    $!=0; $_= <P>; m/^(\d+) (\d+) .*/ or die "$_ ? $!";
+    ($dim,$nvertices)= ($1,$2);
+    $!=0; $_= <P>; m/^(\%.*)\n/ or die "$_ ? $!";
+    $fmt= $1;
+    for ($i=0; $i<$nvertices; $i++) {
+       $!=0; defined($_=<P>) or die "$prime $!";
+       m/^\s*(\S+)\s*(\S+)\s*(.*)/ or die "$_ ?";
+       initdata_prime_point_callback($1,$2,$3,$fmt);
+    }
+}
+
 sub make_initdata () {
     open I, "$initdata" or die "$initdata $!";
     open B, ">$output.new" or die "$output.new $!";
 
-    $_= <I>;
-    m/^(\d+) .*/ or die "$_ ?";
-
-    $dim= $1;
-
-    for ($i=0; $i<$dim; $i++) {
-       for (;;) {
-           $!=0; defined($_= <I>) or die "$initdata $!";
-           last if m/\S/;
+    for ($i=0; $i<$nvertices; $i++) {
+       for ($k=0; $k<3; $k++) {
+           for (;;) {
+               $!=0; defined($_= <I>) or die "$initdata $!";
+               last if m/\S/;
+           }
+           $vertex[$k]= $_;
        }
-       print B pack "d", $_ or die $!;
+       initdata_return_vertex_transform();
+       print B pack "d3", @vertex or die $!;
     }
 
     close B or die $!;