
import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.URL;
import java.util.regex.*;
import java.text.ParseException;

public class Shape3D {
    
    private XPoint3D[] point = null;
    
    private int[][] edge = null;  // two points per edge
    
    private int[][] face = null;  // any number of points
    
    public void setPoints(XPoint3D[] point) {
        this.point = point;
        
        /* copy code
        if (point == null)
            return;
        
        int n = point.length;
        
        this.point = new XPoint3D[n];
        
        for (int i = 0; i < n; i++)
            this.point[i] = point[i];
        */
    }
    
    
    public void setEdges(int[][] edge) {
        this.edge = edge;
    }
    
    
    public void setFaces(int[][] face) {
        this.face = face;
    }
    
    
    public Shape3D makeTransform3D(Transform3D t) {
        Shape3D result = new Shape3D();
        
        if ((point == null) || (t == null))
            return result;
        
        int n = point.length;
        
        result.point = new XPoint3D[n];
        
        for (int i = 0; i < n; i++)
            result.point[i] = t.transform(point[i]);
        
        result.edge = edge;
        
        result.face = face;
        
        return result;
    }
}

