projects
/
anneal.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
checkpoint
[anneal.git]
/
src
/
edu
/
berkeley
/
qfat
/
geom
/
Triangle.java
diff --git
a/src/edu/berkeley/qfat/geom/Triangle.java
b/src/edu/berkeley/qfat/geom/Triangle.java
index
df7c463
..
18c73a0
100644
(file)
--- a/
src/edu/berkeley/qfat/geom/Triangle.java
+++ b/
src/edu/berkeley/qfat/geom/Triangle.java
@@
-1,48
+1,47
@@
package edu.berkeley.qfat.geom;
import javax.media.opengl.*;
package edu.berkeley.qfat.geom;
import javax.media.opengl.*;
+/**
+ * an oriented triangle, defined by three points in clockwise order.
+ */
public abstract class Triangle implements HasBoundingBox {
public abstract Point p1();
public abstract Point p2();
public abstract Point p3();
public abstract class Triangle implements HasBoundingBox {
public abstract Point p1();
public abstract Point p2();
public abstract Point p3();
+ /** the face normal vector */
public Vec norm() {
return p2().minus(p1()).cross(p3().minus(p1())).norm();
}
public Vec norm() {
return p2().minus(p1()).cross(p3().minus(p1())).norm();
}
+
+ /** the area of the triangle */
public float area() {
return
(float)Math.abs(0.5*p1().distance(p2())
* new Vec(p1(), p2()).norm().dot(new Vec(p2(), p3())));
}
public float area() {
return
(float)Math.abs(0.5*p1().distance(p2())
* new Vec(p1(), p2()).norm().dot(new Vec(p2(), p3())));
}
+
+ /** issue gl.glVertex() for each of the triangle's points */
public void glVertices(GL gl) {
p1().glVertex(gl);
p2().glVertex(gl);
p3().glVertex(gl);
}
public void glVertices(GL gl) {
p1().glVertex(gl);
p2().glVertex(gl);
p3().glVertex(gl);
}
+
+ /** the triangle's centroid */
public Point centroid() {
return new Point((p1().x+p2().x+p3().x)/3,
(p1().y+p2().y+p3().y)/3,
(p1().z+p2().z+p3().z)/3);
}
public Point centroid() {
return new Point((p1().x+p2().x+p3().x)/3,
(p1().y+p2().y+p3().y)/3,
(p1().z+p2().z+p3().z)/3);
}
- public float diameter() {
- // FIXME: what is this supposed to be?
- return Math.max(Math.max(p1().distance(p2()),
- p2().distance(p3())),
- p3().distance(p1())) / 2;
- }
+ /** ratio of the area of the triangle to that of the square formed from its longest edge */
public float aspect() {
float max = Math.max(Math.max(p1().distance(p2()),
p2().distance(p3())),
p3().distance(p1())) / 2;
return 1/(1+area()/(max*max));
}
public float aspect() {
float max = Math.max(Math.max(p1().distance(p2()),
p2().distance(p3())),
p3().distance(p1())) / 2;
return 1/(1+area()/(max*max));
}
- public float aspect0() {
- float max = Math.max(Math.max(p1().distance(p2()),
- p2().distance(p3())),
- p3().distance(p1())) / 2;
- return (area()/(max*max));
- }
public float getMaxX() { return Math.max(p1().x, Math.max(p2().x, p3().x)); }
public float getMinX() { return Math.min(p1().x, Math.min(p2().x, p3().x)); }
public float getMaxX() { return Math.max(p1().x, Math.max(p2().x, p3().x)); }
public float getMinX() { return Math.min(p1().x, Math.min(p2().x, p3().x)); }