This browser does not have a Java Plug-in.
Get the latest Java Plug-in here.

anar+

by   LaBelle + Nembrini
©2008

built with ( )
   examples index
Rotate: middle click or key[1]
Zoom in|out: wheel button or key[2]
AutoRotate: key[5]
(First Click inside the applet to enable keys)

This applet use OpenGL, you might have to install extra jogl libraries once to view this applet. You may have a look at image capture and video at the bottom of this page. You might accept security security permenently to remove the security prompts on each pages.



sourcecode


   PDE Download:   Test05aCsplineDarboux.pde
   JAVA Download:   Test05aCsplineDarboux.java


Click on anar+ terms to get the documentation.

import processing.opengl.*;
import anar.*;
 
 
 
 
 
/*
 * Example for Anar library by Guillaume LaBelle + Julien Nembrini
 * http://anar.ch
 */
 
 
Obj myObj = new Obj();
 
 
void setup(){
    size(800,400,OPENGL);
  Anar.init(this);
  Anar.drawAxis();
  myObj = createModule();
}
 
Obj createModule(){
  // Initialize a local object
  Obj module = new Obj();
 
  // First construction: a basic line
  Pts construction = new Pts();
 
  Param c = new Param(100,0,200);
  Param z = new Param(0);
 
  construction.add(0,0,0);
  construction.add(30,20,0);
  construction.add(60, -20,0);
  construction.add(Anar.Pt(c,z,z));
  construction.add(120,0,40);
  construction.add(150,0,0);
  construction.add(180,0,0);
 
  // From this first set of points, create a curve of degree 4
  CSpline curve = new CSpline(construction,4);
 
  Param size = new Param(10,0,50);
 
  // Track parameters of point C
  Anar.sliders(c);
  Anar.sliders(size);
 
  // Create set of Points from an uniform distribution of points
  Pts curveWithPointsUniform = curve.getPts(200);
  module.add(curveWithPointsUniform);
 
 
  // now create a sweep from the darboux vector extracted 
  // from the sequence of points on the curve
  Pts ptsA;
  Pts ptsB;
  Pts ptsC;
 
  // /////////////////////////////
  ptsA = curveWithPointsUniform;
  ptsB = new Pts();
  ptsC = new Pts();
 
  for (int i1 = 1; i1<ptsA.numOfPts()-2; i1++){
      Pt p0 = ptsA.pt(i1-1);
      Pt p1 = ptsA.pt(i1);
      Pt p2 = ptsA.pt(i1+1);
      Pt p3 = ptsA.pt(i1+2);
 
      if (i1%33==0) module.add(new Circle(p0,p1,p2));
      PtDarboux omega = new PtDarboux(p0,p1,p2,p3,size);
 
      ptsB.add(omega);
//        ptsC.add(Anar.Pt(p1).minus(omega).multiply(-1).plus(p1));
  }
  ptsA.remove(0);
 
  module.add( new SweepTwoPaths(ptsA,ptsB));    
 
  // note: glitches appear in the sweep because the cardinal spline is not C_3 continuous
 
  Anar.camTarget(construction);
 
  return module;
}
 
 
void draw(){
  background(155);
  myObj.draw();
}
 
 
void keyPressed(){
 
  if(key==' ')
    RhinoScript.export(myObj,"curveTest");
}
 
 
 



screenshots