Hello all,
I'm using the FITGRID procedures KURVP1 and KURVP2 to detemine the points
of intersection of two closed polygons .
The polygons represent (roughly circular) wind adjusted range circles. One
calculated outbound from some point on the earth and the other inbound to
that point.
When my input original polygons get to be of a small diameter, representing
a radius of roughly 200Nm or under, the return arrays from the KURVP1
function (XP,YP) become NAN.
I'm wondering if there are double precision versions of these function so
that I can use this program for smaller polygon radii?
Thanks in advance,
John Prinos
jprinos@dehavilland.ca
CODE: (bad as it is...)
CHARACTER*80 ACNAME,COMMAND,CRCLTYPE,CNAME
CHARACTER*250 MAPFILE,CITYNAME
DOUBLE PRECISION PLAT,PLON,ANGL,PLATDIFF,PLONDIFF
DOUBLE PRECISION ANGLL,ANGLR,ANGLB,ANGLT
INTEGER NU1,NU2,IERR,IOUT,CLRINDX,ACNINDX
REAL PLATR,PLONR,PLATN,PLONN,CLAT,CLON
REAL XLV,XRV,YBV,YTV,XLW,XRW,YBW,YTW,LS
C
C Declare stuff required to do color fill.
C
PARAMETER (LAMA=12000000,NCRA=600000,NGPS=300,LRWK=2*NCRA)
C
DIMENSION IAMA(LAMA),XCRA(NCRA),YCRA(NCRA),IAAI(NGPS),IAGI(NGPS)
REAL XUN(16),YUN(16),XP(16),YP(16),TEMP(32),S(16)
REAL XU1(16),YU1(16), XU2(16),YU2(16)
C
PARAMETER (IOUT=1000)
REAL U(IOUT),XO1(IOUT),YO1(IOUT),XON(IOUT),YON(IOUT),
+ XO2(IOUT),YO2(IOUT)
C
....
CALL GETARG(1,MAPFILE)
OPEN(UNIT=10,FILE=MAPFILE,STATUS='OLD')
READ(10,*) ANGLL,ANGLR,ANGLB,ANGLT
READ(10,*) CNAME
READ(10,*) PLAT,PLON
READ(10,*) ACNAME
1 READ(10,*,END=999) COMMAND
IF(
+(COMMAND.EQ.'OB').OR.
+(COMMAND.EQ.'IB').OR.
+(COMMAND.EQ.'0W'))
+THEN
NU1 = 16
DO 21 I=1,NU1
C XU1 Latitude point of the Ith point on the range circle
C YU1 Long. point of the Ith point on the range circle
READ(10,*) XU1(I),YU1(I)
21 CONTINUE
C
C Do KURVP1 set up.
C
CALL KURVP1(NU1,XU1,YU1,XP,YP,TEMP,S,1,IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'Error return from KURVP1 =',IERR
STOP
ENDIF
C
C Get interpolated points using KURV2.
C
TINC = 1.0/(IOUT-1)
DO 10 I=1,IOUT
U(I) = (I-1)*TINC
CALL KURVP2(U(I),XO1(I),YO1(I),NU1,XU1,YU1,XP,YP,S,1)
C PRINT *, 'I=',I,' U=',U(I),' X01=', XO1(I),' YO1=',YO1(I)
IF(ABS(XO1(I)-PLAT).GT.PLATDIFF) PLATDIFF = ABS(XO1(I)-PLAT)
IF(ABS(YO1(I)-PLON).GT.PLONDIFF) PLONDIFF = ABS(YO1(I)-PLON)
10 CONTINUE
ENDIF
GOTO 1
......
E-MAIL NOTICE: The information contained in this e-mail message (and any
attachment(s) transmitted herewith) is intended for the exclusive use of
the addressee(s) named above. This message may be a solicitor-client
communication and as such is privileged and confidential. If you are not
an addressee (or responsible for delivery of this message to such person),
any disclosure, reproduction, distribution or other dissemination or use of
this message, in whole or in part, is strictly prohibited. If you have
received this message in error, please notify the sender immediately by
return e-mail and delete this message.
_______________________________________________
ncarg-talk mailing list
ncarg-talk@ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncarg-talk
This archive was generated by hypermail 2b29 : Mon Aug 04 2003 - 16:12:09 MDT