anchor.diff:    var s0 = v0.storage;
     var s1 = v1.storage;
     return s0[1] == s1[1] && s0[0] == s0[0];
  +}
  +
  +rot90V2(Vector3 inout) {
  +  var t = inout.x;
  +  inout.x = - inout.y;
  +  inout.y = t;
  +  return inout;
   }
   /// return [out]
   Vector3 lookAt(Vector3 target, Vector3 position3d, Vector3 out, [Vector3 up]) {
  
positive.code:     var separated = false;
      for (var i = 0; (!separated) && (i < a.length); i++) {
        // axis is the left normal of the edge
        axis.setFrom(a[(i+1) % a.length]).sub(a[i]);
        var t = axis.x;
        axis.x = - axis.y;
        axis.y = t;
  
        extractMinMaxProjection(a, axis, amm);
        extractMinMaxProjection(b, axis, bmm);
  
negative.code: 
      if (!separated) {
        //check on normal
        rot90V2(axis);
        resetMinMax(bmm);
        updateMinMaxProjection(s1, axis, bmm);
        updateMinMaxProjection(s2, axis, bmm);
  