Диссертация (1149346), страница 12
Текст из файла (страница 12)
o u t . p r i n t l n ( " v o i d p r o c e s s E n l a r g e m e n t s t a r t e d " ) ;HashMap<I n t e g e r , T r i a n g l e > t r s = t r i a n g u l a t i o n . g e t T r i a n g l e s D a t a ( ) . g e t ( t r i a n g u l a t i o n .getEnlargementNum ( ) ) . g e t T r i a n g l e s ( ) ;System . o u t . p r i n t l n ( " S o u r c e t r i a n g l e s c o u n t : " + t r s . s i z e ( ) ) ;78final Vertice [ ]v e r t i c e s = triangulation . getVerticesData () . getVertices () ;910int [ ] [ ]originalValues = triangulation . originalValues ;111213141516System .
o u t . p r i n t l n ( " P r e p e a r i n g h e l p l e r mappings " ) ;H e l p e r M a p p i n g s h e l p e r s M a p p i n g s = new H e l p e r M a p p i n g s (vertices ,trs);171819L i n k e d L i s t <I n t e g e r > queue = new L i n k e d L i s t <I n t e g e r >() ;HashMap<I n t e g e r , T r i a n g l e > e n l a r g e d T r i a n g l e s = new HashMap<I n t e g e r , T r i a n g l e >() ;202122// s e l e c t f i r s t v e r t e x ( r a n d o m l y )queue . add ( s e l e c t F i r s t R a n d o m V i d x ( h e l p e r s M a p p i n g s ) ) ;2324252627282930313233343536// p r o c e s s e n l a r g e m e n t , w h i l e queue n o t emptyw h i l e ( queue .
s i z e ( ) > 0 ){enlargeSquaresGroup (queue . p o l l ( ) ,trs ,enlargedTriangles ,helpersMappings ,queue ,vertices ,originalValues);} // end o f w h i l e373839404142System . o u t . p r i n t l n ( " S o u r c e t r i a n g l e s c o u n t : " + t r s . s i z e ( ) ) ;System . o u t . p r i n t l n ( " E n l a r g e d t r i a n g l e s c o u n t : " + e n l a r g e d T r i a n g l e s . s i z e ( ) ) ;System . o u t . p r i n t l n ( " v o i d p r o c e s s E n l a r g e m e n t f i n i s h e d \n" ) ;r e t u r n new T r i a n g l e s D a t a ( e n l a r g e d T r i a n g l e s ) ;} // end o f v o i d p r o c e s s E n l a r g e m e n tListing 2 – Метод TriangulationEnlargementFactory.enlargeSquaresGroup1234567891011private s t a t i c void enlargeSquaresGroup (f i n a l Integer centralVidx ,HashMap<I n t e g e r , T r i a n g l e > s o u r c e T r i a n g l e s ,HashMap<I n t e g e r , T r i a n g l e > e n l a r g e d T r i a n g l e s ,HelperMappings helpersMappings ,L i n k e d L i s t <I n t e g e r > queue ,final Vertice [ ] vertices ,int [ ] [ ] originalValues) {HashSet<Square> s q u a r e s = h e l p e r s M a p p i n g s .
squaresByVidxMap . g e t ( c e n t r a l V i d x ) ;i f ( s q u a r e s == n u l l )11712return ;131415161718// p r o c e s s a l l s q u a r e s f o r g r o u pf o r ( Square sq : s q u a r e s ){i f ( sq . i s E n l a r g e d ( ) )continue ;1920212223242526272829I n t e g e r outwardVidx = Square . e n l a r g e (sq ,centralVidx ,sourceTriangles ,enlargedTriangles ,vertices ,originalValues);i f ( o u t w a r d V i d x == −1 )continue ;303132// add t o queuequeue . push ( o u t w a r d V i d x ) ;333435363738// d e l e t e s m a l l t r i a n g l e s , w h i c h were e n l a r g e dHashSet<I n t e g e r > t i d x e s = S q u a r e .
g e t T r i a n g l e s ( s q ) ;for ( Integer tidx : tidxes )s o u r c e T r i a n g l e s . remove ( t i d x ) ;} // end o f f o r S q u a r e39404142// remove s q u a r e from mappingh e l p e r s M a p p i n g s . squaresByVidxMap . remove ( c e n t r a l V i d x ) ;} // end o f v o i d e n l a r g e F o r S q u a r e s G r o u pListing 3 – Метод Square.enlarge123456789public static Integer enlarge (S q u a r e sq ,f i n a l I n t e g e r oneSideVidx ,f i n a l HashMap<I n t e g e r , T r i a n g l e > s o u r c e T r i a n g l e s ,f i n a l HashMap<I n t e g e r , T r i a n g l e > e n l a r g e d T r s ,Vertice [ ] vertices ,int [ ] [ ] originalValues) {HashSet<I n t e g e r > s q T r s = s q .
s q ;101112f i n a l I n t e g e r s q a u r e C e n t r a l V i d x = sq . v i d x ;f i n a l Vertice sqaureCentralVertice = vertices [ sqaureCentralVidx ] ;1314151617HashSet<T r i a n g l e > g r o u p 0 = new HashSet<T r i a n g l e >(2) ;HashSet<T r i a n g l e > g r o u p 1 = new HashSet<T r i a n g l e >(2) ;HashSet<I n t e g e r > g 0 v s = new HashSet<I n t e g e r >(4) ;HashSet<I n t e g e r > g 1 v s = new HashSet<I n t e g e r >(4) ;18192021222324252627f o r ( I n t e g e r t i d x : sqTrs ) {Triangle t r = sourceTriangles .
get ( t i d x ) ;HashSet<I n t e g e r > v s = T r i a n g l e . g e t V e r t e c e s ( t r ) ;i f ( vs . contains ( oneSideVidx ) ) {g r o u p 0 . add ( t r ) ;g0vs . addAll ( vs ) ;} else {g r o u p 1 . add ( t r ) ;g1vs . addAll ( vs ) ;118}2829}303132g 0 v s .
remove ( s q a u r e C e n t r a l V i d x ) ;g 1 v s . remove ( s q a u r e C e n t r a l V i d x ) ;3334353637HashSet<I n t e g e r > newG0vs = new HashSet<I n t e g e r >(3) ;HashSet<I n t e g e r > newG1vs = new HashSet<I n t e g e r >(3) ;newG0vs . a d d A l l ( g 0 v s ) ;newG1vs . a d d A l l ( g 1 v s ) ;383940i f ( newG0vs . s i z e ( ) != 3 | | newG1vs . s i z e ( ) != 3 )System . o u t .
p r i n t l n ( "Smth s t r a n g e h a p p e n s . . . " ) ;414243T r i a n g l e t r 0 = T r i a n g l e . c r e a t e ( newG0vs ) ;T r i a n g l e t r 1 = T r i a n g l e . c r e a t e ( newG1vs ) ;44454647484950515253545556575859/∗ b o o l e a n p a s s C h e c k = E r r o r C h e c k e r .
c h e c k (sqaureCentralVertice ,tr0 ,vertices) ; ∗/boolean passCheck = ErrorChecker . checkByOriginalValue (sqaureCentralVertice ,tr0 ,vertices ,originalValues);// System . o u t . p r i n t l n ( " Check r e s u l t : " + p a s s C h e c k ) ;i f ( ! passCheck ) {r e t u r n −1;}606162e n l a r g e d T r s . put ( e n l a r g e d T r s . s i z e ( ) , t r 0 ) ;e n l a r g e d T r s . put ( e n l a r g e d T r s . s i z e ( ) , t r 1 ) ;63646566// g e t o u t w a r d v e r t i c e sg1vs . removeAll ( g0vs ) ;sq .
s e t E n l a r g e d ( t r u e ) ;676869re tur n g1vs . i t e r a t o r () . next () ;} // end o f v o i d e n l a r g e119.















