[ https://issues.apache.org/jira/browse/MATH-780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Willis updated MATH-780: ------------------------------- Description: New to the work here. Thanks for your efforts on this code. I create a BSPTree from a BoundaryRep (Brep) my test Brep is a cube as represented by a float array containing 8 3D points in(x,y,z) order and an array of indices (12 triplets for the 12 faces of the cube). I construct a BSPMesh() as shown in the code below. I can construct the PolyhedronsSet() but have problems extracting the faces from the BSPTree to reconstruct the BRep. The attached code (BSPMesh2.java) shows that a small change to 1 of the vertex positions causes/corrects the problem. Any ideas? was: New to the work here. Thanks for your efforts on this code. I create a BSPTree from a BoundaryRep (Brep) my test Brep is a tetrahedron as represented by a float array containing 4 3D points (x,y,z) order and an array of indices (4 triplets for the 4 faces of the tet). I construct a BSPMesh() as shown in the code below. I can construct the PolyhedronsSet() however, when I interrogate the shape (with getSize() or getBoundarySize() I get infinity back as a result). When I try to get back the BRep (by traversing the BSPTree resulting from PolyhedronsSet.getTree(true) and getting the PolygonsSet() associated with each 3D SubPlane, I get a null vertex back and strange values. Any ideas? public class BSPMesh { public BSPMesh(float[] coords, int[] indices) { double size; setBoundingBox(coords); ArrayList<SubHyperplane<Euclidean3D>> subHyperplaneList = new ArrayList(); for (int idx = 0; idx < indices.length; idx += 3) { int idxA = indices[idx] * 3; int idxB = indices[idx + 1] * 3; int idxC = indices[idx + 2] * 3; Vector3D v_1 = new Vector3D(coords[idxA], coords[idxA + 1], coords[idxA + 2]); Vector3D v_2 = new Vector3D(coords[idxB], coords[idxB + 1], coords[idxB + 2]); Vector3D v_3 = new Vector3D(coords[idxC], coords[idxC + 1], coords[idxC + 2]); Vector3D[] vertices = {v_1, v_2, v_3}; Plane polyPlane = new Plane(v_1, v_2, v_3); ArrayList<SubHyperplane<Euclidean2D>> lines = new ArrayList(); Vector2D[] projPts = new Vector2D[vertices.length]; for (int ptIdx=0; ptIdx < projPts.length; ptIdx++) { projPts[ptIdx] = polyPlane.toSubSpace(vertices[ptIdx]); } SubLine lineInPlane = null; for (int ptIdx=0; ptIdx < projPts.length; ptIdx++) { lineInPlane = new SubLine(projPts[ptIdx], projPts[(ptIdx+1)%projPts.length]); lines.add(lineInPlane); } Region<Euclidean2D> polyRegion = new PolygonsSet(lines); SubPlane polygon = new SubPlane(polyPlane, polyRegion); size = polyRegion.getSize(); // correct size here Vector3D[][] verticesTest = getVertices(polygon); // correctly retrieves the BRep for each face subHyperplaneList.add(polygon); } PolyhedronsSet polyhedronsSet = new PolyhedronsSet(subHyperplaneList); BSPTree<Euclidean3D> myTree = polyhedronsSet.getTree(true); size = polyhedronsSet.getSize(); // strange Inf returned size = polyhedronsSet2.getBoundarySize(); // strange Inf returned // Member variable and other code for extracting the BRep not included here... can include if desired //tree = myTree; //Vector3D[][] vertices = getVertices((SubPlane) ((BoundaryAttribute) tree.getAttribute()).getPlusOutside()); // strange values returned here System.out.println("END"); } public static void main(String[] args) { float[] tetCoords = {1, 0, 0, 2, 0, 0, 1, 1, 0, 1, 0, 1}; int[] tetIndices = {0, 1, 2, 0, 1, 3, 0, 2, 3, 2, 1, 3}; BSPMesh blah = new BSPMesh(tetCoords, tetIndices); } } > BSPTree class and recovery of a Euclidean 3D BRep > ------------------------------------------------- > > Key: MATH-780 > URL: https://issues.apache.org/jira/browse/MATH-780 > Project: Commons Math > Issue Type: Bug > Affects Versions: 3.0 > Environment: Linux > Reporter: Andrew Willis > Labels: BSPTree, euclidean.threed > Attachments: BSPMesh2.java > > > New to the work here. Thanks for your efforts on this code. > I create a BSPTree from a BoundaryRep (Brep) my test Brep is a cube as > represented by a float array containing 8 3D points in(x,y,z) order and an > array of indices (12 triplets for the 12 faces of the cube). I construct a > BSPMesh() as shown in the code below. I can construct the PolyhedronsSet() > but have problems extracting the faces from the BSPTree to reconstruct the > BRep. The attached code (BSPMesh2.java) shows that a small change to 1 of the > vertex positions causes/corrects the problem. > Any ideas? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira