public void prepareTriangulation( TriangulationContext<?> tcx ) { if( _triangles == null ) { _triangles = new ArrayList<DelaunayTriangle>( _points.size() ); } else { _triangles.clear(); } tcx.addPoints( _points ); } }
public void clear() { super.clear(); _triList.clear(); }
public int getStepCount() { return _tcx.getStepCount(); }
tcx.newConstraint( _points.get( i ), _points.get( i+1 ) ); tcx.newConstraint( _points.get( 0 ), _points.get( _points.size()-1 ) ); tcx.newConstraint( p._points.get( i ), p._points.get( i+1 ) ); tcx.newConstraint( p._points.get( 0 ), p._points.get( p._points.size()-1 ) ); tcx.addPoints(uniquePts.keySet());
public static void triangulate( PolygonSet ps ) { TriangulationContext<?> tcx = createContext( _defaultAlgorithm ); for( Polygon p : ps.getPolygons() ) { tcx.prepareTriangulation( p ); triangulate( tcx ); tcx.clear(); } }
public static void triangulate( TriangulationAlgorithm algorithm, Triangulatable t ) { TriangulationContext<?> tcx; // long time = System.nanoTime(); tcx = createContext( algorithm ); tcx.prepareTriangulation( t ); triangulate( tcx ); // logger.info( "Triangulation of {} points [{}ms]", tcx.getPoints().size(), ( System.nanoTime() - time ) / 1e6 ); }
@SuppressWarnings("unchecked") @Override public void prepareTriangulation( TriangulationContext tcx ) { super.prepareTriangulation( tcx ); if( _constrainedPointList != null ) { HashMap<TriangulationPoint, TriangulationPoint> uniquePts = new HashMap<TriangulationPoint, TriangulationPoint>(_points.size()); // Enforce same coordinates means same instance of TriangulationPoint TriangulationPoint.mergeInstances(uniquePts, _points); TriangulationPoint.mergeInstances(uniquePts, _constrainedPointList); TriangulationPoint p1,p2; Iterator iterator = _constrainedPointList.iterator(); while(iterator.hasNext()) { p1 = (TriangulationPoint)iterator.next(); p2 = (TriangulationPoint)iterator.next(); tcx.newConstraint(p1,p2); } } else { for( int i = 0; i < _index.length; i+=2 ) { // XXX: must change!! tcx.newConstraint( _points.get( _index[i] ), _points.get( _index[i+1] ) ); } } }
public void setActiveConstraint( DTSweepConstraint e ) { _activeConstraint = e; _tcx.update("setWorkingSegment"); }
/** * Notify all listeners of this new event * @param event */ private void sendEvent( TriangulationProcessEvent event ) { for( TriangulationProcessListener l : _listeners ) { l.triangulationEvent( event, _tcx.getTriangulatable() ); } }
public void shutdown() { _awaitingTermination = true; _tcx.terminateTriangulation(); resume(); }
public static void triangulate( TriangulationContext<?> tcx ) { switch( tcx.algorithm() ) { case DTSweep: default: DTSweep.triangulate( (DTSweepContext)tcx ); } }
private void start() { if( _thread == null || _thread.getState() == State.TERMINATED ) { _isTerminated = false; _thread = new Thread( this, _algorithm.name() + "." + _tcx.getTriangulationMode() ); _thread.start(); sendEvent( TriangulationProcessEvent.Started ); } else { // Triangulation already running. Terminate it so we can start a new shutdown(); _restart = true; } }
@Override public void prepareTriangulation(TriangulationContext<?> tcx) { triangles.clear(); for (LineSegment2d l : segmentSet) { TriangulationPoint tp1, tp2; if (!pointSet.containsKey(l.getBegin())) { tp1 = new TPoint(l.getBegin().x, l.getBegin().y); pointSet.put(l.getBegin(), tp1); points.add(tp1); } else { tp1 = pointSet.get(l.getBegin()); } if (!pointSet.containsKey(l.getEnd())) { tp2 = new TPoint(l.getEnd().x, l.getEnd().y); pointSet.put(l.getEnd(), tp2); points.add(tp2); } else { tp2 = pointSet.get(l.getEnd()); } tcx.newConstraint(tp1, tp2); } segmentSet.clear(); pointSet.clear(); tcx.addPoints(points); } }
for( Triangulatable t : _triangulations ) _tcx.clear(); _tcx.prepareTriangulation( t ); _pointCount += _tcx._points.size(); Poly2Tri.triangulate( _tcx );
@Override public void prepareTriangulation( Triangulatable t ) super.prepareTriangulation( t );
public void setPrimaryTriangle( DelaunayTriangle triangle ) { _primaryTriangle = triangle; _tcx.update("setPrimaryTriangle"); }
public void setActiveNode( AdvancingFrontNode node ) { _activeNode = node; _tcx.update("setWorkingNode"); }
public void setSecondaryTriangle( DelaunayTriangle triangle ) { _secondaryTriangle = triangle; _tcx.update("setSecondaryTriangle"); }
update("Triangulation was interrupted");