* @P_VORO PROCEDUR PASCAL 12/10/18 21:15:02 7532 * PROCEDURE @P_VORO * *---------------------------------------------------------------------* * NOM : @P_VORO * * * * DESCRIPTION : Construit la partition de Voronoi d'un ensemble de * * points (maillage de POI1). S'appuie sur une triangu- * * -lation de cet ensemble de points dans une boite de * * dimension finie, ce qui permet de construire les * * polyedres associes a leur enveloppe convexe. * * * * SYNTAXE : TAB1 = @P_VORO MPOI1 (FLOT1) (ILOG1) ; * * * * - MPOI1 = MAILLAGE, nuage de points (POI1) ; * * - FLOT1 = FLOTTANT, rapport de la taille de la boite de * * triangulation sur la dimension du nuage de points ; * * - ILOG1 = LOGIQUE, mettre a VRAI pour activer TRAC. * * - TAB1 = TABLE, dont chaque indice est un point de MPOI1, dont * * le sous-indice 'MAV' contient le Maillage des Aretes * * du polyedre de Voronoi associe a ce point et le sous- * * indice 'MPT' celui des Points de la Triangulation * * adjacents a chaque face de ce polyedre. * * De plus, l'indice 'MAV' de la table contient le * * Maillage des Aretes de tous les polyedres et l'indice * * 'MPT', le maillage MPOI1. * * * * LANGAGE : GIBIANE-CAST3M * * AUTEUR : S. PASCAL (CEA/DEN/DM2S/SEMT/LM2S) * * COURRIEL : serge.pascal@cea.fr * *---------------------------------------------------------------------* * VERSION : v1, 11/04/2007, version initiale * * HISTORIQUE : v1, 11/04/2007, creation * * HISTORIQUE : * * HISTORIQUE : * *---------------------------------------------------------------------* * Priere de PRENDRE LE TEMPS de completer les commentaires * * en cas de modification de ce sous-programme afin de faciliter * * la maintenance ! * *---------------------------------------------------------------------* * * *----------------------- Lecture des arguments -----------------------* * * * * * Taille de la boite de triangulation : * XBOI1 = 5. ; 'FINS' ; * * IVISU1 = FAUX ; 'FINS' ; * * *----------------- Triangulation du nuage de points ------------------* * * PXXX1 = XBOI1 * ((XMAX1 - XMIN1) 0. 0.) ; PYYY1 = XBOI1 * (0. (YMAX1 - YMIN1) 0.) ; PZZZ1 = XBOI1 * (0. 0. (ZMAX1 - ZMIN1)) ; *Trac (MPOI2 'ET' (MPOI1 'COUL' viol)) ; * * 'SI' IVISU1 ; 'FINS' ; * * *-------------- Construction de la partition de Voronoi --------------* * * * Taille caracteristique du nuage de points : * TOL1 = 1.E-9 * L000 ; * * * Boucle sur les points de la partition : * TPVORO1 . 'MPT' = MPOI1 ; 'REPE' BI1 NBI1 ; I1 = &BI1 ; TPVORO1 . PTI1 . 'MPT' = MPTJ1 ; 'REPE' BJ1 NBJ1 ; J1 = &BJ1 ; CNTIJ1 = TPVORO1 . PTJ1 . PTI1 . 'MAV' ; 'SINO' ; * Initialisation boucle PTK1 : * (PTI1 'ET' PTJ1 'ET' PTK1) ; 'SI' (XIJKL1 '<' 0.) ; 'FINS' ; TPVORO1 . PTI1 . PTJ1 . PTK1 . 'PTL' = PTL1 ; (PTI1 'ET' PTJ1 'ET' PTK1 'ET' PTL1) ; TPVORO1 . PTI1 . PTJ1 . PTK1 . PTL1 = PVIJKL1 ; 'FINS' ; PTKP1 = PTK1 ; PVIJKLP1 = PVIJKL1 ; * Boucle sur PTK1 : * 'REPE' BK1 NBK1 ; PTK1 = PTL1 ; (PTI1 'ET' PTJ1 'ET' PTK1) ; TPVORO1 . PTI1 . PTJ1 . PTK1 . 'PTL' = PTL1 ; (PTI1 'ET' PTJ1 'ET' PTK1 'ET' PTL1) ; TPVORO1 . PTI1 . PTJ1 . PTK1 . PTL1 = PVIJKL1 ; 'FINS' ; TPVORO1 . PTI1 . PTJ1 . PTK1 . 'MAV' = AIJK1 ; 'SI' (&BK1 'EGA' 1) ; CNTIJ1 = AIJK1 ; 'SINO' ; CNTIJ1 = CNTIJ1 'ET' AIJK1 ; 'FINS' ; PTKP1 = PTK1 ; PVIJKLP1 = PVIJKL1 ; 'FIN' BK1 ; 'FINS' ; TPVORO1 . PTI1 . PTJ1 . 'MAV' = CNTIJ1 ; 'SI' (J1 'EGA' 1) ; TPVORO1 . PTI1 . 'MAV' = CNTIJ1 ; 'SINO' ; TPVORO1 . PTI1 . 'MAV' = (TPVORO1 . PTI1 . 'MAV') 'ET' CNTIJ1 ; 'FINS' ; 'FIN' BJ1 ; 'SI' (I1 'EGA' 1) ; TPVORO1 . 'MAV' = TPVORO1 . PTI1 . 'MAV' ; 'SINO' ; TPVORO1 . 'MAV' = (TPVORO1 . 'MAV') 'ET' (TPVORO1 . PTI1 . 'MAV') ; 'FINS' ; 'FIN' BI1 ; * * *------------------ Elimination des points doubles -------------------* * * * * 'SI' IVISU1 ; 'FINS' ; * * *------------------------------ Sortie -------------------------------* * * 'RESP' TPVORO1 ; * * 'FINP' ; *---------------------------------------------------------------------* * FIN PROCEDURE @P_VORO *
© Cast3M 2003 - Tous droits réservés.
Mentions légales