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:   CardinalClosed.pde
   JAVA Download:   CardinalClosed.java


Click on anar+ terms to get the documentation.

import processing.opengl.*;
import anar.*;
 
 
 
 
 
 
 
Pts baseLine1  = new Pts();
Pts baseLine2  = new Pts();
 
CSpline cardinal1;
CSpline cardinal2;
 
Param degree1;
Param degree2;
 
 
void setup() {
  size(800,400,OPENGL);
 
Anar.init(this);
frameRate(200);
 
Anar.drawAxis(true);
Pts.globalRender = new RenderPtsAll();
Pt.globalRender = new RenderPtShapeOriented(new AColor(100),new AColor(255,100,100,150),Anar.scene);
CSpline.globalRender.splineRes.set(30);
 
initCurve1();
initCurve2();
}
 
 
void initCurve1(){
baseLine1.add(Anar.Pt(-50,0,0));
baseLine1.add(Anar.Pt(0,50,0));
baseLine1.add(Anar.Pt(50,0,0));
baseLine1.stroke(155,0,0);
 
degree1 = new Param(3f,0.1f,40);
 
cardinal1 = new CSpline(baseLine1,degree1);
cardinal1.closedMode = true;
cardinal1.mode = CSpline.NEXT;
//cardinal1.mode = CSpline.HIMSELF;
//cardinal1.mode = CSpline.PREVIOUS;
 
Anar.sliders(degree1);
Anar.camTarget(baseLine1);
}
 
 
void initCurve2(){
baseLine2.add(Anar.Pt(90,0,0));
baseLine2.add(Anar.Pt(100,50,20));
baseLine2.add(Anar.Pt(150,0,-30));
baseLine2.add(Anar.Pt(100,-50,50));
baseLine2.add(Anar.Pt(130,-20,30));
baseLine2.stroke(155,0,0);
 
degree2 = new Param(3f,0.1f,40);
 
cardinal2 = new CSpline(baseLine2,degree2);
cardinal2.closedMode = true;
cardinal2.mode = CSpline.NEXT;
//cardinal2.mode = CSpline.HIMSELF;
//cardinal2.mode = CSpline.PREVIOUS;
 
Anar.sliders(degree2);
Anar.sliders(baseLine2.pt(3));
Anar.camTarget(baseLine2);
}
 
 
void draw() {
background(190);
 
baseLine1.draw();
baseLine2.draw();
 
stroke(80);
if(drawConstruction)
{
  cardinal1.draw();
  cardinal2.draw(); 
}
else
{
  cardinal1.drawConstructionLines();
  cardinal2.drawConstructionLines();
}
}
 
 
private boolean drawConstruction = true;
void keyPressed(){
switch(key){
case ' ':
  if(drawConstruction) 
    drawConstruction = false;
  else
    drawConstruction = true;
  break;
}
}
 



screenshots