
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();
}

|