# DIRDIS - FIND SHORTEST DIRECTION AND DISTANCE BETWEEN TWO # POINTS IN A UNIV W/ WRAP-AROUND # GSW 2/28/82 SUBROUTINE DIRDIS( X0, Y0, X1, Y1, DIR, DIS ) REAL X0, Y0, X1, Y1 #INPUT - POINTS CO-ORDS, 1.0 TO 101.0 REAL DIR #OUTPUT- DIRECTION (X0,Y0) TO (X1,X1), 0-360 REAL DIS #OUTPUT- DISTANCE BETWEEN POINTS DEFINE(DEGRAD,57.29577951) #DEGREES PER RADIAN CONVERSION XC = X1 DX = ABS( X0 - X1 ) IF ( DX > 50. ) [ DX = 100. - DX IF ( X1 < 51. ) XC = XC + 100. ELSE XC = XC - 100. ] YC = Y1 DY = ABS( Y0 - Y1 ) IF ( DY > 50. ) [ DY = 100. - DY IF ( YC < 51.) YC = YC + 100. ELSE YC = YC - 100. ] DIS = SQRT( DX*DX + DY*DY ) DIR = ATAN3( YC-Y0, XC-X0 ) * DEGRAD IF ( DIR .LT. 0 ) DIR = DIR + 360. RETURN END # DSTNCE - FIND SHORTEST DISTANCE BETWEEN TWO # POINTS IN A UNIV W/ WRAP-AROUND # GSW 2/28/82 REAL FUNCTION DSTNCE( X0, Y0, X1, Y1, DIR, DIS ) REAL X0, Y0, X1, Y1 #INPUT - POINTS CO-ORDS, 1.0 TO 101.0 REAL DIS #OUTPUT- DISTANCE BETWEEN POINTS XC = X1 DX = ABS( X0 - X1 ) IF ( DX > 50. ) [ DX = 100. - DX IF ( X1 < 51. ) XC = XC + 100. ELSE XC = XC - 100. ] YC = Y1 DY = ABS( Y0 - Y1 ) IF ( DY > 50. ) [ DY = 100. - DY IF ( YC < 51.) YC = YC + 100. ELSE YC = YC - 100. ] DSTNCE = SQRT( DX*DX + DY*DY ) RETURN END