
// RhodoneaShape3D.java
// Andrew Davison, April 2005, ad@fivedots.coe.psu.ac.th

/* Jméno bylo inspirováno tvarem připomínajícím růži. Rovnice vypadá takto:
     r = a cos(k . angle)
   Vytvoří se k nebo 2k okvětních lístků v závislosti na tom, je-li
   k liché či sudé.

   Je-li angle == 0, r== a == r, pak se používá poloměr r jako
   parametr a.
   Po získání poloměru r musíme převést zpět na kartézské souřadnice (x,y).
*/

import javax.media.j3d.*;
import javax.vecmath.*;


public class RhodoneaShape3D extends LatheShape3D
{
  public RhodoneaShape3D(double[] xsIn, double[] ysIn,
                                Color3f darkCol, Color3f lightCol)
  { super(xsIn, ysIn, darkCol, lightCol);  }


  public RhodoneaShape3D(double[] xsIn, double[] ysIn, Texture tex)
  { super(xsIn, ysIn, tex);  }


  protected double xCoord(double radius, double angle)
  { double r = radius * Math.cos(4 * angle);   // 8 okvětních lístků
    return  r * Math.cos(angle);  
  }

  protected double zCoord(double radius, double angle)
  { double r = radius * Math.cos(4 * angle);
    return  r * Math.sin(angle); 
  }

}  // konec třídy: RhodoneaShape3D