C PVECT SOURCE GOUNAND 11/10/07 21:16:13 7150 C CALCULE LE PRODUIT VECTORIEL DE (IDIM-1) VECTEURS C SUBROUTINE PVECT IMPLICIT INTEGER(I-N) IMPLICIT real*8 (a-h,o-z) -INC CCOPTIO -INC CCGEOME -INC SMCOORD C IF (IDIM.NE.2.AND.IDIM.NE.3) THEN C 709 2 C Fonction indisponible en dimension %i1. INTERR(1)=IDIM CALL ERREUR(709) RETURN ENDIF C CALL LIROBJ('POINT ',IP1,0,IRETOU) IF(IRETOU.EQ.0) GO TO 30 C C CAS DES VECTEURS C SEGACT MCOORD IREF1=(IDIM+1)*(IP1-1) X1=XCOOR(IREF1+1) Y1=XCOOR(IREF1+2) IF (IDIM.EQ.3) GOTO 10 NBPTS=XCOOR(/1)/3+1 SEGADJ MCOORD XCOOR((NBPTS-1)*3+1)=-Y1 XCOOR((NBPTS-1)*3+2)=X1 XCOOR((NBPTS-1)*3+3)=DENSIT GOTO 20 10 CALL LIROBJ('POINT ',IP2,1,IRETOU) IF (IERR.NE.0) RETURN IREF2=(IDIM+1)*(IP2-1) Z1=XCOOR(IREF1+3) X2=XCOOR(IREF2+1) Y2=XCOOR(IREF2+2) Z2=XCOOR(IREF2+3) NBPTS=XCOOR(/1)/4+1 SEGADJ MCOORD XCOOR((NBPTS-1)*4+1)=Y1*Z2-Z1*Y2 XCOOR((NBPTS-1)*4+2)=Z1*X2-X1*Z2 XCOOR((NBPTS-1)*4+3)=X1*Y2-Y1*X2 XCOOR((NBPTS-1)*4+4)=DENSIT 20 CONTINUE IR=NBPTS CALL ECROBJ('POINT ',IR) RETURN C C CAS DES CHPOINTS C 30 CONTINUE CALL LIROBJ('CHPOINT ',MCHPO1,1,IRETOU) IF (IERR.NE.0) RETURN CALL LIROBJ('LISTMOTS',MLMOT1,1,IRETOU) IF (IERR.NE.0) RETURN IF (IDIM.EQ.3) THEN CALL LIROBJ('CHPOINT ',MCHPO2,1,IRETOU) IF (IERR.NE.0) RETURN CALL LIROBJ('LISTMOTS',MLMOT2,1,IRETOU) IF (IERR.NE.0) RETURN ENDIF CALL LIROBJ('LISTMOTS',MLMOT3,1,IRETOU) IF (IERR.NE.0) RETURN CALL PROVCC(MCHPO1,MCHPO2,MLMOT1,MLMOT2,MLMOT3,MCHPO3) IF (IERR.NE.0) RETURN CALL ECROBJ('CHPOINT ',MCHPO3) RETURN END