///////////////////////////////////////////////////////////////////////////////
// Copyright (c) 1995-1996 Virtual Design All Rights Reserved.
//
// Permission to use,  copy,  modify,  and  distribute  this  software and its
// documentation for NON-COMMERCIAL purposes and without fee is hereby granted.
//
// VIRTUAL DESIGN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY
// OF THE SOFTWARE, EITHER EXPRESS  OR  IMPLIED,  INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
// OR NON-INFRINGEMENT. VIRTUAL DESIGN SHALL  NOT  BE LIABLE FOR ANY DAMAGES
// SUFFERED BY  LICENSEE AS A RESULT OF USING,  MODIFYING OR DISTRIBUTING THIS
// SOFTWARE OR ITS DERIVATIVES.
//
// THIS SOFTWARE  IS   NOT  DESIGNED  OR  INTENDED FOR USE OR RESALE AS ONLINE
// OR NOT ONLINE CONTROL  EQUIPMENT IN HAZARDOUS  ENVIRONMENTS REQUIRING  FAIL-
// SAFE PERFORMANCE,  SUCH  AS  IN   THE   OPERATION   OF  NUCLEAR  FACILITIES,
// AIRCRAFT   NAVIGATION  OR  COMMUNICATION  SYSTEMS,  AIR   TRAFFIC   CONTROL,
// DIRECT LIFE  SUPPORT  MACHINES, OR WEAPONS SYSTEMS, IN  WHICH  THE  FAILURE
// OF  THE SOFTWARE COULD  LEAD DIRECTLY  TO DEATH, PERSONAL INJURY, OR SEVERE
// PHYSICAL OR ENVIRONMENTAL  DAMAGE ("HIGH RISK ACTIVITIES").  VIRTUAL DESIGN
// SPECIFICALLY DISCLAIMS  ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH
// RISK ACTIVITIES.
///////////////////////////////////////////////////////////////////////////////

/** Classe de test d'un bol centrée en O et axée sur l'axe des côtes.
 *  La classe bol n'est qu'une classe qui initialise le maillage à l'aide du
 *  modeleur de rotation.
 *  @author Guillaume Pelletier.
 *  @version 1.0
 */
class Bol extends Objet3D
 {
 float m_diam, m_angle ;
 int   m_pas, m_pasver ;


 public Bol   ( float p_diam    , // le rayon de la sphere
                int   p_pas     , // le nombre de profil.
                int   p_pasver  , // le nombre de point du profil.
                float p_angle   ) // l'angle de rotation.
  {
  m_diam   = p_diam   ;
  m_pas    = p_pas    ;
  m_pasver = p_pasver ;
  m_angle  = p_angle  ;

  int          l_i ;
  float        l_pasangle,
               l_angle   ,
               l_x = 0;
  Sommet3DH [] l_profil = new Sommet3DH[ p_pasver ]; // deux points sur l'axe

  // génération d'un quart profil rond.
  // ---------------------------------
  l_pasangle =(float)( (Math.PI/2)/p_pasver );
  l_angle    = 0.0f ;

  l_profil[0] = new Sommet3DH( l_x,p_diam,0.0f, 1.0f) ;

  for( l_i = 1 ; l_i < p_pasver-1 ; l_i ++ )
     {
     l_angle -= l_pasangle  ;
     l_profil[l_i] = new Sommet3DH( l_x                            ,  //x
                                    (float)Math.cos(l_angle)*p_diam,  //y
                                    (float)Math.sin(l_angle)*p_diam,  //z
                                    1.0f                           ); //w
     }

  l_profil[p_pasver-1] = new Sommet3DH( l_x,0.0f,-p_diam,1.0f) ;


  // l'axe des z
  Vecteur3DH l_axis = new Vecteur3DH( new Sommet3DH(0,0,0,1),
                                      new Sommet3DH(0,0,1,1));
  // le modeleur de rotation
  modeler l_model = new modelerRotate( l_axis    ,
                                       l_profil  ,
                                       p_angle   ,
                                       p_pas     );

  // génération des sommets, arêtes et facettes
  l_model.generate(m_data) ;
  }

 }

