/** * @param rqm * @param out * @throws IOException */ private void write( RenderableQualityModel rqm, DataOutputStream out ) throws IOException { if ( rqm.getPrototypeReference() != null ) { out.writeInt( QL_PROTO ); write( rqm.getPrototypeReference(), out ); } else { out.writeInt( QL_GEOMETRIES ); ArrayList<RenderableQualityModelPart> qmParts = rqm.getQualityModelParts(); if ( qmParts != null && !qmParts.isEmpty() ) { int size = qmParts.size(); out.writeInt( size ); for ( RenderableQualityModelPart rqmp : rqm.getQualityModelParts() ) { write( rqmp, out ); } } else { out.write( -1 ); } } }
/** * * @param rqm * @return List of points of a 3D object projected onto x/y-plane */ private Coordinate[] projectToPlane( RenderableQualityModel rqm ) { int length = 0; for ( RenderableQualityModelPart qmp : rqm.getQualityModelParts() ) { length += ( (RenderableGeometry) qmp ).getVertexCount(); } Coordinate[] coords = new Coordinate[length]; int i = 0; for ( RenderableQualityModelPart qmp : rqm.getQualityModelParts() ) { RenderableGeometry rg = (RenderableGeometry) qmp; FloatBuffer coordBuffer = rg.getReadOnlyCoordBuffer(); coordBuffer.rewind(); int cap = coordBuffer.capacity(); while ( coordBuffer.position() < cap ) { coords[i++] = new Coordinate( coordBuffer.get(), coordBuffer.get() ); // ignore z. coordBuffer.get(); } } return coords; }
/** * * @param rqm * @return List of points of a 3D object projected onto x/y-plane */ private float[] retrieveCoords( RenderableQualityModel rqm ) { int length = 0; for ( RenderableQualityModelPart qmp : rqm.getQualityModelParts() ) { length += ( (RenderableGeometry) qmp ).getVertexCount(); } float[] coords = new float[length * 3]; int i = 0; for ( RenderableQualityModelPart qmp : rqm.getQualityModelParts() ) { RenderableGeometry rg = (RenderableGeometry) qmp; FloatBuffer coordBuffer = rg.getReadOnlyCoordBuffer(); coordBuffer.rewind(); int cap = coordBuffer.capacity(); while ( coordBuffer.position() < cap ) { coords[i++] = coordBuffer.get(); coords[i++] = coordBuffer.get(); coords[i++] = coordBuffer.get(); } } return coords; }
float maxY = Float.MIN_VALUE; float maxZ = Float.MIN_VALUE; ArrayList<RenderableQualityModelPart> qualityModelParts = rqm.getQualityModelParts(); for ( RenderableQualityModelPart rqmp : qualityModelParts ) { if ( rqmp != null ) {