import java.awt.*;
import java.lang.Math;

public class Shape extends Transform {
    public PointyPoint vertices_[] = null;
    public int []faces_[] = null;
    public Color color_ = Color.black;
    public PointyPoint transformed_[] = null;
        
    public Shape() {} // for subclasses that have to calculate for init()
    public Shape(int numvert, int [] facesizes) { 
        init(numvert,facesizes);
    }
    public Shape(int numvert, int nfaces, int facesize) {
        init(numvert,nfaces,facesize);
    }
    void init(int numvert, int [] facesizes) {
        initz(numvert,facesizes.length);
        for(int i = 0; i<facesizes.length; ++i)
            faces_[i] = new int[facesizes[i]];
    }
    void init(int numvert, int nfaces, int facesize) {
        initz(numvert,nfaces);
        for(int i = 0; i<nfaces; ++i)
            faces_[i] = new int[facesize];
    }
    private void initz(int numvert,int numfaces) {
        vertices_ = new PointyPoint[numvert];
        transformed_ = new PointyPoint[numvert];
        for(int i = 0; i<numvert; ++i)
            transformed_[i] = new PointyPoint();
        faces_ = new int[numfaces][];
    }
    void transform(Matrix3D view) {
        super.transform(view);
        for(int i = 0; i<vertices_.length; ++i) {
            worldward_.transform(vertices_[i].pt,transformed_[i].pt);
            inward_.transform(vertices_[i].v,transformed_[i].v);
        }
    }
}
