protected boolean checkTriangles(float gridX, float gridY, Ray pick, Vector3f intersection, TerrainPatch patch, Triangle store) { if (!getTriangles(gridX, gridY, patch)) return false; if (pick.intersectWhere(gridTriA, intersection)) { store.set(gridTriA.get1(), gridTriA.get2(), gridTriA.get3()); return true; } else { if (pick.intersectWhere(gridTriB, intersection)) { store.set(gridTriB.get1(), gridTriB.get2(), gridTriB.get3()); return true; } } return false; }
@Test public void testIssue957() { Vector3f v3 = new Vector3f(0f, 0f, 3f); Triangle t1 = makeTriangle(); t1.set(2, v3); checkTriangle(t1); Triangle t2 = makeTriangle(); t2.set(v3, v0, v1); checkTriangle(t2); Triangle t3 = makeTriangle(); t3.set(2, v3.x, v3.y, v3.z); checkTriangle(t3); Triangle t4 = makeTriangle(); t4.set3(v3); checkTriangle(t4); }
float borderAngle = (float) Math.sqrt(2.0f) / 2.0f; for (int i = 0, pointIndex = 0; i < positions.length; i += 9) { triangle.set(0, positions[i], positions[i + 1], positions[i + 2]); triangle.set(1, positions[i + 3], positions[i + 4], positions[i + 5]); triangle.set(2, positions[i + 6], positions[i + 7], positions[i + 8]); Vector3f n = triangle.getNormal(); float dotNX = Math.abs(n.dot(x));
triangle.set(0, positions[i], positions[i + 1], positions[i + 2]); triangle.set(1, positions[i + 3], positions[i + 4], positions[i + 5]); triangle.set(2, positions[i + 6], positions[i + 7], positions[i + 8]); float sgn1 = Math.signum(triangle.get1().x - cx); float sgn2 = Math.signum(triangle.get2().x - cx);
triangle.set(0, positions[i], positions[i + 1], positions[i + 2]); triangle.set(1, positions[i + 3], positions[i + 4], positions[i + 5]); triangle.set(2, positions[i + 6], positions[i + 7], positions[i + 8]); float sgn1 = Math.signum(triangle.get1().x - cx); float sgn2 = Math.signum(triangle.get2().x - cx);
protected boolean checkTriangles(float gridX, float gridY, Ray pick, Vector3f intersection, TerrainPatch patch, Triangle store) { if (!getTriangles(gridX, gridY, patch)) return false; if (pick.intersectWhere(gridTriA, intersection)) { store.set(gridTriA.get1(), gridTriA.get2(), gridTriA.get3()); return true; } else { if (pick.intersectWhere(gridTriB, intersection)) { store.set(gridTriB.get1(), gridTriB.get2(), gridTriB.get3()); return true; } } return false; }