Fixed problems with sorting collinear and intersecting edges caused by chain resolution in partition monotone
This commit is contained in:
@@ -95,13 +95,13 @@ public class MeshingTest2 extends JPanel {
|
||||
// draw = planes.get( new Random().nextInt( planes.size() ) );
|
||||
|
||||
System.out.println( "Draw is " + draw );
|
||||
// Attempt to mesh all planes
|
||||
// try {
|
||||
// test( planes );
|
||||
// } catch ( PolygonException e ) {
|
||||
// draw = e.getPlane();
|
||||
// System.out.println( "Draw is now " + draw );
|
||||
// }
|
||||
// Attempt to mesh all planes
|
||||
try {
|
||||
test( planes );
|
||||
} catch ( PolygonException e ) {
|
||||
draw = e.getPlane();
|
||||
System.out.println( "Draw is now " + draw );
|
||||
}
|
||||
|
||||
final Collection< Vertex > data = process( draw );
|
||||
final Collection< EdgePolygon > polys = triangulate( draw );
|
||||
@@ -265,8 +265,18 @@ public class MeshingTest2 extends JPanel {
|
||||
// Make sure this works
|
||||
mesh = mesh.copyOf();
|
||||
|
||||
final Collection< EdgePolygon > polys = mesh.mesh( false );
|
||||
chains = mesh.chains;
|
||||
Collection< EdgePolygon > polys;
|
||||
|
||||
try {
|
||||
polys = mesh.mesh( false );
|
||||
chains = mesh.chains;
|
||||
} catch ( IllegalStateException e ) {
|
||||
e.printStackTrace();
|
||||
|
||||
polys = mesh.mesh( true );
|
||||
chains = mesh.chains;
|
||||
}
|
||||
|
||||
long end = System.currentTimeMillis();
|
||||
System.out.println( "Took " + ( end - start ) + "ms" );
|
||||
|
||||
@@ -646,6 +656,7 @@ public class MeshingTest2 extends JPanel {
|
||||
int count = 2;
|
||||
Random random = new Random( hashCode() );
|
||||
|
||||
final int spacing = 25;
|
||||
for ( final EdgePolygon p : polygons ) {
|
||||
final Collection< HalfEdge > edges = p.getEdges();
|
||||
|
||||
@@ -655,9 +666,9 @@ public class MeshingTest2 extends JPanel {
|
||||
Point p1 = edge.getOrigin().getPosition();
|
||||
Point p2 = edge.getDest().getPosition();
|
||||
g.drawLine(
|
||||
( int ) ( ( centerX + p1.getX() + count * 25 ) * scale ) + offsetX,
|
||||
( int ) ( ( centerX + p1.getX() + count * spacing ) * scale ) + offsetX,
|
||||
( int ) ( ( centerY - p1.getY() - 150 ) * scale ) + offsetY,
|
||||
( int ) ( ( centerX + p2.getX() + count * 25 ) * scale ) + offsetX,
|
||||
( int ) ( ( centerX + p2.getX() + count * spacing ) * scale ) + offsetX,
|
||||
( int ) ( ( centerY - p2.getY() - 150 ) * scale ) + offsetY
|
||||
);
|
||||
|
||||
@@ -670,7 +681,7 @@ public class MeshingTest2 extends JPanel {
|
||||
|
||||
final double diff = scale * 0.15;
|
||||
if ( !verts.add( edge.getOrigin() ) ) {
|
||||
g.drawRect( ( int ) ( ( centerX + p1.getX() + count * 25 ) * scale ) - ( int ) diff + offsetX, ( int ) ( ( centerY - p1.getY() - 150 ) * scale ) - ( int ) diff + offsetY, ( int ) ( diff * 2 ), ( int ) ( diff * 2 ) );
|
||||
g.drawRect( ( int ) ( ( centerX + p1.getX() + count * spacing ) * scale ) - ( int ) diff + offsetX, ( int ) ( ( centerY - p1.getY() - 150 ) * scale ) - ( int ) diff + offsetY, ( int ) ( diff * 2 ), ( int ) ( diff * 2 ) );
|
||||
}
|
||||
}
|
||||
count++;
|
||||
|
||||
Reference in New Issue
Block a user