/*
 * Author: Paul Koshevoy
 * Triangle.java  Mon, Nov 25 1998, 11:25:00 1997
 */

public class Triangle
{
public v3x1 v0;
public v3x1 v1;
public v3x1 v2;
public v3x1 N;
    
public Triangle(double x0, double y0, double z0,
		double x1, double y1, double z1,
		double x2, double y2, double z2)
    {
	v0 = new v3x1(x0, y0, z0);
	v1 = new v3x1(x1, y1, z1);
	v2 = new v3x1(x2, y2, z2);
	N = v3x1.unit(new v3x1(v0, v1, v2));
    }
    
public Triangle(v3x1 V0, v3x1 V1, v3x1 V2)
    {
//	v0 = new v3x1(V0);
//	v1 = new v3x1(V1);
//	v2 = new v3x1(V2);
	v0 = V0;
	v1 = V1;
	v2 = V2;
	N = v3x1.unit(new v3x1(v0, v1, v2));
    }
    
public Triangle(v3x1 V0, v3x1 V1, v3x1 V2, v3x1 N_)
    {
	v0 = V0;
	v1 = V1;
	v2 = V2;
	N = N_;
    }

public Triangle(Triangle T, m3x3 m, v3x1 c)
    {
	v0 = (m.times(T.v0)).plus(c);
	v1 = (m.times(T.v1)).plus(c);
	v2 = (m.times(T.v2)).plus(c);
	N = v3x1.unit(new v3x1(v0, v1, v2));
    }
    
public Triangle(Triangle T, v3x1 pos)
    {
	v0 = T.v0.plus(pos);
	v1 = T.v1.plus(pos);
	v2 = T.v2.plus(pos);
	N = v3x1.unit(new v3x1(v0, v1, v2));
    }
        
public void dump()
    {
	v0.dump();
	v1.dump();
	v2.dump();
	N.dump();
    }
    
public Triangle rot(m3x3 M)
    {
	return (new Triangle(M.times(v0),
			     M.times(v1),
			     M.times(v2)));
    }

public boolean equal(Triangle T)
    {
	if(T==null)
	    return false;
	if(v0.equal(T.v0) && v1.equal(T.v1) && v2.equal(T.v2))
	    return true;
	return false;
    }
}


