chiark / gitweb /
wip nz improving
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 1 Mar 2019 12:54:15 +0000 (12:54 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 1 Mar 2019 12:54:15 +0000 (12:54 +0000)
generate-board

index a9de3d4cf190622a02d1838862f44f8286d92907..07a2c63d763bb96c990a50f626a401b783cc5079 100755 (executable)
@@ -216,7 +216,7 @@ sub transform_coordinates () {
     gsl_vector_add($$pr->raw, $translate->raw) and confess;
     gsl_vector_scale($$pr->raw, $scale) and confess;
   });
-  $mid = $lims[1] - $lims[0];
+  $mid = ($lims[1] - $lims[0]) * 0.5;
 }
 
 sub adjust_nz() {
@@ -228,6 +228,7 @@ sub adjust_nz() {
   foreach my $v (@$poly) {
     $v->{NZ_Occurs} = $occurs{$v->{VxName}};
   }
+  print STDERR " nz ".(scalar @$poly)."\n";
   my $occurs_m = sub {
     my ($ei) = @_;
     $poly->[($ei+@$poly) % @$poly]{NZ_Occurs} > 1
@@ -236,13 +237,23 @@ sub adjust_nz() {
     next if $occurs_m->($ei);
     next unless $occurs_m->($ei-1);
     next unless $occurs_m->($ei+1);
+    print STDERR " nz would adjust $poly->[$ei]{VxName}\n";
     # adjust coord outwards
   }
   for my $ei (0..$#$poly) {
-    next unless $occurs_m->($ei-1);
     next unless $occurs_m->($ei);
-    my $pos = \ $poly->[$ei]{Pos};
-    $$pos = $$pos*2 - $mid + Math::GSL::Vector->new([-1000,0]);
+    print STDERR " nz occurs_m $ei $poly->[$ei]{VxName}\n";
+    next unless $occurs_m->($ei-1);
+    my $dleft = Math::GSL::Vector->new([-200,0]);
+    foreach my $which (0,-1) {
+      my $ej = ($ei +        $which + @$poly) % @$poly;
+      my $ek = ($ei + +1 + 3*$which + @$poly) % @$poly;
+      my $posj = \ $poly->[$ej]{Pos};
+      my $posk = \ $poly->[$ek]{Pos};
+      print STDERR " nz adj j=$ej ",prvec($$posj)," $poly->[$ej]{VxName}\n";
+      print STDERR " nz adj k=$ek ",prvec($$posk)," $poly->[$ek]{VxName}\n";
+      $$posj = $$posj + $dleft;
+    }
   }
 }