kbrese
C KBRESE SOURCE CB215821 25/04/22 21:15:07 12245 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C Calcul des facteurs de forme en 3D C Sp appele par KPARC C C Detarmination des cellules interceptées par la droite C reliant 2 cellules. Algorithme de Bresenham C NCEL : NOMBRE DE CELLULES APPROCHANT LE SEGMENT (K1,K2) C ICEL : COORDONNEES CORRESPONDANTES C C DIMENSION K1(2),K2(2),ICEL(2,1),KG(2) I1 = K1(1) J1 = K1(2) C NDI=IABS(I2-I1) NDJ=IABS(J2-J1) IF (NDI.EQ.0) THEN IF(NDJ.EQ.0) THEN NCEL = 1 ICEL(1,1) = I1 ICEL(2,1) = J1 ELSE NCEL = NDJ+1 DO 1 J=1,NCEL ICEL(1,J) = I1 ICEL(2,J) = JA+J-1 1 CONTINUE ENDIF ELSE IF(NDJ.EQ.0) THEN NCEL = NDI+1 DO 2 I=1,NCEL ICEL(1,I) = IA + I - 1 ICEL(2,I) = J1 2 CONTINUE ELSE C IA=I2 JA=J2 IB=I1 JB=J1 ELSE IA=I1 JA=J1 IB=I2 JB=J2 ENDIF C C CAS GENERAL C IF(JB.GT.JA) THEN I= IA J= JA iarr=0 NCEL = 0 10 CONTINUE NCEL = NCEL + 1 ICEL(1,NCEL) = I ICEL(2,NCEL) = J IF(I.NE.IB.OR.J.NE.JB) THEN IF (iarr.GT.0) THEN J = J + 1 iarr = iarr - NDI ELSE IF (iarr.EQ.0) THEN I = I + 1 J = J + 1 iarr = NDJ - NDI ELSE C iarr.LT.0 I = I + 1 iarr = iarr + NDJ ENDIF ENDIF GOTO 10 ENDIF C PENTE INVERSE ELSE I= IA J= JA iarr=0 NCEL = 0 11 CONTINUE NCEL = NCEL + 1 ICEL(1,NCEL) = I ICEL(2,NCEL) = J IF(I.NE.IB.OR.J.NE.JB) THEN IF (iarr.LT.0) THEN J = J - 1 iarr = iarr + NDI ELSE IF (iarr.EQ.0) THEN I = I + 1 J = J - 1 iarr = NDI - NDJ ELSE C iarr.GT.0 I = I + 1 iarr = iarr - NDJ ENDIF ENDIF GOTO 11 ENDIF ENDIF ENDIF ENDIF IF (NCEL.EQ.1) THEN KG(1) = K1(1) KG(2) = K1(2) ELSE C KG(1)= (K1(1) + K2(1))/2 KG(2)= (K1(2) + K2(2))/2 C ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales