package graphics; public class Cone extends Shape { public Cone() { super(30, 2); addBase(); } public Cone(int newM, int newN) { super(newM, newN); addBase(); } //add the bottom of the cone private void addBase() { Disk base = new Disk(M, N); base.calculate(); base.matrix.identity(); base.matrix.translate(0, 0, 1.0); base.transform(); //add Disk's vertices and faces to Cone's double[][] newVertices = new double[vertices.length + base.numVertices()][6]; int[][] newFaces = new int[faces.length + base.numFaces()][4]; //copy over old vertices System.arraycopy(vertices, 0, newVertices, 0, vertices.length); System.arraycopy(faces, 0, newFaces, 0, faces.length); for (int i=0; i < base.numVertices(); i++) newVertices[vertices.length + i] = base.getVertex(i); for (int i=0; i < base.numFaces(); i++) { int[] face = base.getFace(i); //update the indices referenced in each face for (int j=0; j