private PMatrix getMatrix(PShape shape) { boolean useParams = true; float[] params = null; try { params = shape.getParams(); } catch (NullPointerException npe) { useParams = false; } PMatrix matrix = ((PShapeSVGExtended) shape).getMatrix(); if (matrix == null) { matrix = new PMatrix2D(); } else { // use a copy matrix = matrix.get(); } if (useParams) { matrix.translate(params[0], params[1]); } // is root. if (shape.getParent() == null) { return matrix; } PMatrix2D parentMat = (PMatrix2D) getMatrix(shape.getParent()); matrix.preApply(parentMat); return matrix; }