Passing commit

Check for chain destination vs origin comparison only before intersection
Force move vertex horizontally if within VERTEX_TOLERANCE of another vertex
Share chains across partitions that are being combined
This commit is contained in:
2025-05-23 05:36:00 -04:00
parent 586fb04c02
commit 702a4288b2
3 changed files with 206 additions and 164 deletions

View File

@@ -141,8 +141,8 @@ public class MeshingTest2 extends JPanel {
// System.out.println( "Remaining: " + limit );
// }
// }
final List< Plane > planes = mesh( new File( CHUNK_DIR, "world,-2,1" ) );
masterPlanes.add( planes.get( 218 ) );
final List< Plane > planes = mesh( new File( CHUNK_DIR, "world,-4,-6" ) );
masterPlanes.add( planes.get( 177 ) );
// masterPlanes.add( getTestPlane() );
@@ -277,30 +277,38 @@ public class MeshingTest2 extends JPanel {
public void onPreChainMergeEvent( Collection< Chain > chains ) {
data.selectedChains = chains;
final List< Chain > sorted = new ArrayList< Chain >( chains );
Collections.sort( sorted, ( a, b ) -> {
final double diff = a.getStart().getX() - b.getStart().getX();
if ( Math.abs( diff ) < 1e-7 ) {
return Double.compare( a.getStart().getY(), b.getStart().getY() );
}
return Double.compare( diff, 0 );
} );
for ( Chain chain : sorted ) {
System.out.println( "c: " + chain.getPoints() );
}
final Set< Point > points = new HashSet< Point >();
for ( Chain chain : chains ) {
for ( int i = 1; i < chain.getPoints().size() - 1; ++i ) {
if ( !points.add( chain.getPoints().get( i ) ) ) {
System.out.println( "Intersection at " + chain.getPoints().get( i ) );
}
}
}
// final List< Chain > sorted = new ArrayList< Chain >( chains );
// Collections.sort( sorted, ( a, b ) -> {
// final double diff = a.getStart().getX() - b.getStart().getX();
// if ( Math.abs( diff ) < 1e-7 ) {
// return Double.compare( a.getStart().getY(), b.getStart().getY() );
// }
// return Double.compare( diff, 0 );
// } );
// for ( Chain chain : sorted ) {
// System.out.println( "c: " + chain.getPoints() );
// }
//
// final Set< Point > points = new HashSet< Point >();
// for ( Chain chain : chains ) {
// for ( int i = 1; i < chain.getPoints().size() - 1; ++i ) {
// if ( !points.add( chain.getPoints().get( i ) ) ) {
// System.out.println( "Intersection at " + chain.getPoints().get( i ) );
// }
// }
// }
}
@Override
public void onPartitionEvent( Collection< Polygon > polygons ) {
data.polygons = polygons;
}
} );
data.polygons = mesh.mesh();
final Collection< Polygon > triangles = mesh.mesh();
if ( !triangles.isEmpty() ) {
data.polygons = triangles;
}
// final List< Point > points = new ArrayList< Point >( data.vertices );
// Collections.sort( points, ( a, b ) -> {