// * This code is licensed under:
// * JHPlot License, Version 1.2
// * - for license details see http://hepforge.cedar.ac.uk/jhepwork/ 
// *
// * Copyright (c) 2007 by S.Chekanov (chekanov@mail.desy.de). 
// * All rights reserved.
// * Statement: This package is rewrite of the Browser3D. It's free. I do not know 
// * the author name. 


package jhplot.v3d;


import java.awt.Color;

/**
 * Build a prism.
 * 
 * @author S.Chekanov 
 *
 */
public class Prism extends Object3d
{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public Prism(Model3d md, Vector3d v[], int nv, Vector3d d)
    {
        super(md, nv*2, nv+2);
        for (int i = 0; i < nv; i++)
            addVertex(v[i]);
        for (int i = 0; i < nv; i++)
            addVertex(v[i].x+d.x, v[i].y+d.y, v[i].z+d.z);
        Face3d b0 = face[addFace(nv, getBaseColor(0))];
        for (int i = 0; i < nv; i++)
            b0.addVertex(vert[i]);
        for (int i = 0; i < nv; i++)
        {
            Face3d f = face[addFace(4, getFaceColor(i))];
            int j = (i + 1) % nv;
            f.addVertex(vert[i]);
            f.addVertex(vert[j]);
            f.addVertex(vert[j+nv]);
            f.addVertex(vert[i+nv]);
        }
        Face3d b1 = face[addFace(nv, getBaseColor(1))];
        for (int i = 0; i < nv; i++)
            b1.addVertex(vert[i+nv]);
        colectNormals();
    }

    Prism(Model3d md, Vector3d v[], int nv, float d)
    {
        this(md, v, nv, new Vector3d(0,0,d));
    }

    Color getBaseColor(int b)
    {
        if (b != 0)
            return Color.red;
        else
            return Color.magenta;
    }

    Color getFaceColor(int f)
    {
        if (f % 2 == 0)
            return Color.green;
        else
            return Color.yellow;
    }

}

 

Ads help maintain this website.