public class Cylinder { int N; Tube tube; Disc cap1, cap2; Material material; public Cylinder(int n) { N = 2 * n; tube = new Tube(N); cap1 = new Disc(N); cap2 = new Disc(N); reset(); } public void reset() { tube.reset(); cap1.reset(); cap2.reset(); } public void setMaterial(Material m) { tube.setMaterial(m); cap1.setMaterial(m); cap2.setMaterial(m); } public void bufferTo(double[][] zBuffer, double[][][] frameBuffer, Light[] lights, double focalLength) { tube.bufferTo(zBuffer, frameBuffer, lights, focalLength); cap1.bufferTo(zBuffer, frameBuffer, lights, focalLength); cap2.bufferTo(zBuffer, frameBuffer, lights, focalLength); } public void transformedBy(Matrix3D t) { tube.transformedBy(t); t.translate(0, 0, -1); cap1.transformedBy(t); t.translate(0, 0, 2); cap2.transformedBy(t); } }