Skip to content

NegativeArraySizeException for planar meshes #35

Closed

Description

@K-Meech

Adding a mesh representing a plane that is aligned to the x, y or z axis can cause NegativeArraySizeException. For example:

Image3DUniverse universe = new Image3DUniverse();

// Mesh of a plane perpendicular to the z axis
float length = 1000;
float zpos = -100;
ArrayList<Point3f> triangles = new ArrayList<>();
triangles.add(new Point3f(-length/2, length/2, zpos));
triangles.add(new Point3f(length/2, length/2, zpos));
triangles.add(new Point3f(-length/2, -length/2, zpos));
triangles.add(new Point3f(length/2, length/2, zpos));
triangles.add(new Point3f(-length/2, -length/2, zpos));
triangles.add(new Point3f(length/2, -length/2, zpos));

CustomTriangleMesh mesh = new CustomTriangleMesh( triangles );
universe.addCustomMesh( mesh, "test-plane" );

universe.show();

results in:

Exception in thread "main" java.lang.NegativeArraySizeException
	at ij3d.shapes.BoundingBox.makeLine(BoundingBox.java:209)
	at ij3d.shapes.BoundingBox.<init>(BoundingBox.java:122)
	at ij3d.shapes.BoundingBox.<init>(BoundingBox.java:54)
	at ij3d.shapes.BoundingBox.<init>(BoundingBox.java:50)
	at ij3d.ContentInstant.display(ContentInstant.java:236)
	at ij3d.ContentCreator.createContent(ContentCreator.java:132)
	at ij3d.ContentCreator.createContent(ContentCreator.java:119)
	at ij3d.Image3DUniverse.createContent(Image3DUniverse.java:1175)
	at ij3d.Image3DUniverse.addCustomMesh(Image3DUniverse.java:1143)
	at develop.MinimalPlaneError.main(MinimalPlaneError.java:27)

This is an issue with drawing the BoundingBox, where it tries to draw lines that have a length of zero. This can result in n inside makeLine becoming negative.

I'd be happy to submit a PR with small changes to BoundingBox to account for this edge case.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions