Exemples de la distribution

En cliquant sur une imagette, vous accéderez au source et à l'image. En cliquant sur cette dernière, vous ouvrirez le fichier PDF associé.

calculus.xpclipping.xpcontour.xpcropplot.xpdenom.xpgeomsum.xpkoch.xplevelset.xplissajous.xpnewton.xposcillator.xpparabola.xppascal.xppolar.xppole.xpshadeplot.xpslopefield.xpsphere.xpsqrt.xptorus.xpuppersum.xpweierstrass.xp
wheel.xp [ source ] [ fermer ]
wheel.xp
/* -*-ePiX-*- */
/* wheel.xp -- Animation frames (rolling wheel) -- July 6, 2004 */
#include "epix.h"
using namespace ePiX;

P F(double t, double r)
{
  return P(t-r*Sin(t), 1-r*Cos(t));
}

int main() 
{
  const double dt = 5*M_PI/11;
  double t = 0;

  picture(8, 1);
  bounding_box(P(-1,0), P(15,2));
  unitlength("0.625in");

  for(int i=0; i < 9; ++i)
    {
      t += dt;
      begin(); // Entire picture inside loop body

      line(P(x_min, y_min), P(x_max, y_min)); // the ground

      circle wheel(P(t,1), 1);  wheel.draw();

      domain R = domain(P(0,0), P(t, 1), // [0,t] x [0,1]
                        mesh(10*i,5), mesh((int) ceil(1+4*t), 5));

      // the paths
      bold();
      for (int j=0; j < 6; ++j)
        {
          rgb(1-0.125*j, 0.125*j, 0.5+0.25*j);
          plot(F, R.slice2(0.2*j));
        }

      // the spoke
      green();
      line(P(t,1), F(t,1));

      end();
    
      // figure separator and vertical space
      if (i < 8)
        printf("\n\\vspace*{3ex}\n%%%%");
    }
}