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:   Test03uCircle.pde
   JAVA Download:   Test03uCircle.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;
 
void setup(){
    size(800,400,OPENGL);
  Anar.init(this);
  Anar.drawAxis();
 
  initForm();
}
 
void initForm(){
  myObj = new Obj();
 
  Face triangle = new Face();
 
  triangle.add(Anar.PtRnd(100,100));
  triangle.add(Anar.PtRnd(100,100));
  triangle.add(Anar.PtRnd(100,100));
 
  myObj.add(triangle);
 
  Pt center = new PtBary(triangle);
  center.fill(255,0,0);
  myObj.add(center);
 
  Anar.camTarget(myObj);
 
  Pt circumcenter = circumCenter(triangle);
  circumcenter.fill(0,0,255);
  myObj.add(circumcenter);
 
  Face circle = new Circle(circumcenter,circumRadius(triangle),100);
  myObj.add(circle);
 
}
 
// http://en.wikipedia.org/wiki/Circumcircle
Pt circumCenter(Face f){
 
  Vertex p1 = new Vertex(f.pt(0));
  Vertex p2 = new Vertex(f.pt(1));
  Vertex p3 = new Vertex(f.pt(2));
 
  float aLen = p2.lengthSq(p3);
  float bLen = p1.lengthSq(p3);
  float cLen = p1.lengthSq(p2);
 
  float sub = 2*Vertex.cross(p1.minus(p2),p2.minus(p3)).lengthSq();
 
  float a = aLen*Vertex.dot(p1.minus(p2),p1.minus(p3))/sub;
  float b = bLen*Vertex.dot(p2.minus(p1),p2.minus(p3))/sub;
  float c = cLen*Vertex.dot(p3.minus(p1),p3.minus(p2))/sub;
 
  Vertex result = (Vertex)p1.multiply(a).plus(p2.multiply(b)).plus(p3.multiply(c));
 
  return Anar.Pt(result);
}
 
// http://en.wikipedia.org/wiki/Circumcircle
float circumRadius(Face f){
 
  float totalLength;
 
  // Isit general for polyfgons?
  totalLength = f.pt(0).length(f.pt(1));
  totalLength *= f.pt(1).length(f.pt(2));
  totalLength *= f.pt(2).length(f.pt(0));
 
  float area = f.area();
 
  println(area);
 
  println(totalLength);
 
  return totalLength/ (4*area);
}
 
 
void draw(){
  background(155);
  myObj.draw();
}
 
void keyPressed(){
  if(key==' ')
    initForm();
}
 
 



screenshots