package brtestgratings;

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;

public class Annulus
{
    Color3f green  = new Color3f(0.0f, 1.0f, 0.0f);
    Color3f red  = new Color3f(1.0f, 0.0f, 0.0f);
    Color3f blue  = new Color3f(0.0f, 0.0f, 1.0f);
    Color3f dark  = new Color3f(0.0f, 0.0f, 0.0f);
    Canvas3D anucanvas;
    GraphicsContext3D anugc;
    Transform3D anucmt=new Transform3D();
    private Alpha alpha = new Alpha(-1, 20000);
    double angle = alpha.value() * 2.0*Math.PI;

      int N = 100;
      int stripCounts[] = {N};
      TriangleStripArray annular = new TriangleStripArray(N,
                                  TriangleStripArray.COORDINATES
                                  | TriangleStripArray.COLOR_3,
                                  stripCounts);
       double a, innerDiam, outerDiam=3.9, depth=0;
       int v;

   public void Annulus()
   {
       for(v = 0, a=0.0; v < N; v+=2, a=v*2.0*Math.PI/(N-2))
       {
          annular.setCoordinate(v, new Point3d(
                        innerDiam*Math.cos(a),
                        innerDiam*Math.sin(a),
                        depth));
          annular.setCoordinate(v+1, new Point3d(
                        outerDiam*Math.cos(a),
                        outerDiam*Math.sin(a),
                        depth));
          annular.setColor(v, dark);
          annular.setColor(v+1, dark);
      }

   }

  public Geometry getAnnulus(Canvas3D canvasIn)
  {anucanvas=canvasIn;
   anugc=anucanvas.getGraphicsContext3D();
   anucmt.rotY(0.0);
   anugc.setModelTransform(anucmt);
    return annular;
  }

  public void setParameter(double innerDiamIn)
  {
    innerDiam=innerDiamIn;
    Annulus();
  }
}