float off1 = Vector3.dot(v1, max1v);
float off2 = Vector3.dot(v2, min2v);
float off3 = Vector3.dot(n, min2v);
Vector3 v4 = new Vector3(off1, off2, off3);
Matrix3x3 m = new Matrix3x3(v1, v2, n);
contact.set(m.invert().transform(v4));
}
}
if (max2 - min1 < dist) {
dist = max2 - min1;
displacement.set(n.times(dist));
normal.set(n);
if (i < numNormals) {
contact.set(max2v);
} else if (i < numNormals + c.numNormals) {
contact.set(min1v.plus(displacement));
} else {
int e = i - (numNormals + c.numNormals);
Vector3 v1 = Vector3.cross(edges[e / c.numEdges], n);
Vector3 v2 = Vector3.cross(cedges[e % c.numEdges], n);
float off1 = Vector3.dot(v1, min1v);
float off2 = Vector3.dot(v2, max2v);
float off3 = Vector3.dot(n, max2v);
Vector3 v4 = new Vector3(off1, off2, off3);
Matrix3x3 m = new Matrix3x3(v1, v2, n);
contact.set(m.invert().transform(v4));
}
}
} else {
return false;