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

/* Tři různé implementace částicových systémů:
      * body ve třídě PointArray
      * úsečky ve třídě LineArray
      * čtyřúhelníky ve třídě QuadArray

   Geometrie se ukládají pomocí odkazu BY_REFERENCE a aktualzují
   prostřednictvím tříd implementujících rozhraní GeometryUpdater.

   Ukázková aplikace QuadArray demonstruje, jak aplikovat jednu
   texturu na všechy čtyřúhelníky a jak zkloubit texturu s barvou.
*/

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class Particles3D extends JFrame
{
  private static final int NUM_PARTICLES = 3000;
  private static final int FOUNTAIN_CHOICE = 1;


  public Particles3D(String args[]) 
  {
    super("Particles3D");

    int numParticles = NUM_PARTICLES;
    int fountainChoice = FOUNTAIN_CHOICE;

    if (args.length > 0) {
      try 
      { numParticles = Integer.parseInt( args[0] ); }
      catch(NumberFormatException e)
      { System.out.println("Neplatný počet částic"); }

      if (numParticles < 0) {
        System.out.println("Počet částic musí být kladný");
        numParticles = NUM_PARTICLES;
      }
    }

    if (args.length > 1) {
      try 
      { fountainChoice = Integer.parseInt( args[1] ); }
      catch(NumberFormatException e)
      { System.out.println("Neplatná volba fontány"); }
 
      if ((fountainChoice < 1) || (fountainChoice > 3)) {
        System.out.println("Volba fontány 1-3");
        fountainChoice = FOUNTAIN_CHOICE;
      }
    }

    System.out.println("numParticles: " + numParticles +
                       "; fountainChoice: " + fountainChoice);

    Container c = getContentPane();
    c.setLayout( new BorderLayout() );
    WrapParticles3D w3d = 
       new WrapParticles3D(numParticles, fountainChoice);
    c.add(w3d, BorderLayout.CENTER);

    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    pack();
    setResizable(false);    // rozměry okna jsou pevně dány
    setVisible(true);
  } // konec metody: Particles3D()


// -----------------------------------------

  public static void main(String[] args)
  { new Particles3D(args); }

} // konec třídy: Particles3D

