public boolean generate(Projection proj){
  proj.forward(llp1,pt1);
  proj.forward(llp2,pt2);
  double dx=pt2.x - pt1.x;
  double dy=pt2.y - pt1.y;
  at.setToTranslation(pt1.x,pt1.y);
  at.rotate(Math.atan2(dy,dx) - angle,0,0);
  double sc=Math.sqrt(dx * dx + dy * dy);
  badprojection=(Double.isNaN(sc) || sc / distance * proj.getScale() > 1000000);
  if (badprojection)   Debug.message("e00","badprojection " + str);
 else {
    sc/=w;
    at.scale(sc,sc);
  }
  return true;
}

public boolean generate ( Projection proj ) { proj . forward ( llp1 , pt1 ) ; proj . forward ( llp2 , pt2 ) ; double dx = pt2 . x - pt1 . x ; double dy = pt2 . y - pt1 . y ; at . setToTranslation ( pt1 . x , pt1 . y ) ; at . rotate ( Math . atan2 ( dy , dx ) - angle , 0 , 0 ) ; double sc = Math . sqrt ( dx * dx + dy * dy ) ; badprojection = ( Double . isNaN ( sc ) || sc / distance * proj . getScale ( ) > 1000000 ) ; if ( badprojection ) Debug . message ( "e00" , "badprojection " + str ) ; else { sc /= w ; at . scale ( sc , sc ) ; } return true ; }
generate with a new projection
