Point t1v1 = m.times(t1.v1().p);
Point t1v2 = m.times(t1.v2().p);
Point t1v3 = m.times(t1.v3().p);
+
if (t1v1.distance(t2.v1().p) < MATCHING_EPSILON &&
t1v2.distance(t2.v3().p) < MATCHING_EPSILON &&
t1v3.distance(t2.v2().p) < MATCHING_EPSILON) {
- t2.e3().bindEdge(t1.e1(), m);
- t2.e2().bindEdge(t1.e2(), m);
- t2.e1().bindEdge(t1.e3(), m);
+ t2.e3().bindEdge(t1.e1().pair, m);
+ t2.e2().bindEdge(t1.e2().pair, m);
+ t2.e1().bindEdge(t1.e3().pair, m);
}
if (t1v2.distance(t2.v1().p) < MATCHING_EPSILON &&
t1v3.distance(t2.v3().p) < MATCHING_EPSILON &&
t1v1.distance(t2.v2().p) < MATCHING_EPSILON) {
- t2.e3().bindEdge(t1.e2(), m);
- t2.e2().bindEdge(t1.e3(), m);
- t2.e1().bindEdge(t1.e1(), m);
+ t2.e3().bindEdge(t1.e2().pair, m);
+ t2.e2().bindEdge(t1.e3().pair, m);
+ t2.e1().bindEdge(t1.e1().pair, m);
}
if (t1v3.distance(t2.v1().p) < MATCHING_EPSILON &&
t1v1.distance(t2.v3().p) < MATCHING_EPSILON &&
t1v2.distance(t2.v2().p) < MATCHING_EPSILON) {
- t2.e3().bindEdge(t1.e3(), m);
- t2.e2().bindEdge(t1.e1(), m);
- t2.e1().bindEdge(t1.e2(), m);
+ t2.e3().bindEdge(t1.e3().pair, m);
+ t2.e2().bindEdge(t1.e1().pair, m);
+ t2.e1().bindEdge(t1.e2().pair, m);
}
+
if (t1v1.distance(t2.v1().p) < MATCHING_EPSILON &&
t1v2.distance(t2.v2().p) < MATCHING_EPSILON &&
t1v3.distance(t2.v3().p) < MATCHING_EPSILON) {
- t2.e1().bindEdge(t1.e1().pair, m);
- t2.e2().bindEdge(t1.e2().pair, m);
- t2.e3().bindEdge(t1.e3().pair, m);
+ t2.e1().bindEdge(t1.e1(), m);
+ t2.e2().bindEdge(t1.e2(), m);
+ t2.e3().bindEdge(t1.e3(), m);
}
if (t1v2.distance(t2.v1().p) < MATCHING_EPSILON &&
t1v3.distance(t2.v2().p) < MATCHING_EPSILON &&
t1v1.distance(t2.v3().p) < MATCHING_EPSILON) {
- t2.e2().bindEdge(t1.e1().pair, m);
- t2.e3().bindEdge(t1.e2().pair, m);
- t2.e1().bindEdge(t1.e3().pair, m);
+ t2.e2().bindEdge(t1.e1(), m);
+ t2.e3().bindEdge(t1.e2(), m);
+ t2.e1().bindEdge(t1.e3(), m);
}
if (t1v3.distance(t2.v1().p) < MATCHING_EPSILON &&
t1v1.distance(t2.v2().p) < MATCHING_EPSILON &&
t1v2.distance(t2.v3().p) < MATCHING_EPSILON) {
- t2.e3().bindEdge(t1.e1().pair, m);
- t2.e1().bindEdge(t1.e2().pair, m);
- t2.e2().bindEdge(t1.e3().pair, m);
+ t2.e3().bindEdge(t1.e1(), m);
+ t2.e1().bindEdge(t1.e2(), m);
+ t2.e2().bindEdge(t1.e3(), m);
}
+
}
}
}
generateTile(transforms, tile);
fixupTile();
} });
+
tileMenu.add(new MyMenuItem("Slim Dense Packing (Cubic)") { public void hit() {
setTile(new Mesh(false));
float unit = 0.4f;
float height = 2*r*(float)Math.sqrt(2f/3f);
transforms = new Matrix[] {
+
+ //Matrix.rotate(new Vec(1,0,0), (float)Math.PI),
+ //Matrix.reflect(new Vec(1,0,0)),
+
Matrix.translate(new Vec(-unit, 0, 0)),
Matrix.translate(new Vec( unit, 0, 0)),
Matrix.translate(new Vec(-cos, 0, sin)),
Matrix.translate(new Vec(-cos, 0, -sin)),
Matrix.translate(new Vec( cos, 0, -sin)),
+ Matrix.translate(new Vec( 0, height, -z)),
+ Matrix.translate(new Vec(-r, height, x)),
+ Matrix.translate(new Vec( r, height, x)),
+ Matrix.translate(new Vec( 0, -height, z)),
+ Matrix.translate(new Vec(-r, -height, -x)),
+ Matrix.translate(new Vec( r, -height, -x)),
+
/*
Matrix.translate(new Vec( 0, height, -z)).times(Matrix.rotate(new Vec(0,1,0), (float)Math.PI)),
Matrix.translate(new Vec(-r, height, x)).times(Matrix.rotate(new Vec(0,1,0), (float)Math.PI)),
Matrix.translate(new Vec( r, -height, x)).times(Matrix.rotate(new Vec(0,1,0), (float)Math.PI)),
*/
- Matrix.translate(new Vec( 0, height, -z)),
- Matrix.translate(new Vec(-r, height, x)),
- Matrix.translate(new Vec( r, height, x)),
- Matrix.translate(new Vec( 0, -height, z)),
- Matrix.translate(new Vec(-r, -height, -x)),
- Matrix.translate(new Vec( r, -height, -x)),
- //Matrix.rotate(new Vec(0,0,1), (float)Math.PI),
-
/*
Matrix.translate(new Vec( 0, height, -z)).times(Matrix.scale(-1,1,-1)),
Matrix.translate(new Vec(-r, height, x)).times(Matrix.scale(-1,1,-1)),
Matrix.ONE
};
generateTile(transforms, tile);
+
+
+ transforms = new Matrix[] {
+ Matrix.reflect(new Vec( 0, height, -z).norm()),
+ //Matrix.reflect(new Vec( 0, -height, z)),
+ Matrix.ONE
+ };
+
//for(int i=0; i<transforms.length; i++) transforms[i] = Matrix.translate(m.times(vecs[i]));
+ /*
Matrix m = Matrix.scale(1.9f, 1f ,1);
//Matrix m = Matrix.scale(1f, 2.1f, 1f);
tile.transform(m);
for(int i=0; i<transforms.length; i++)
transforms[i] = preMultiplyTranslationalComponentBy(transforms[i], m);
+ */
+
fixupTile();
} });