/** * Check center and normal after modification. */ private void checkTriangle(Triangle triangle) { Vector3f center = triangle.getCenter(); Vector3f normal = triangle.getNormal(); assert center.equals(new Vector3f(1f, 0f, 1f)); assert normal.equals(new Vector3f(0f, -1f, 0f)); } }
private Triangle makeTriangle() { Triangle triangle = new Triangle(v0, v1, v2); /* * Check center and normal before modification. */ Vector3f center = triangle.getCenter(); Vector3f normal = triangle.getNormal(); assert center.equals(new Vector3f(1f, 1f, 0f)); assert normal.equals(new Vector3f(0f, 0f, 1f)); return triangle; }
CollisionResult cr = new CollisionResult(intersection, distance); cr.setGeometry(patch); cr.setContactNormal(hit.getNormal()); results.addCollision(cr); return intersection; cr.setGeometry(patch); results.addCollision(cr); cr.setContactNormal(hit.getNormal()); return intersection; results.addCollision(cr); cr.setGeometry(patch); cr.setContactNormal(hit.getNormal()); return intersection;
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)); float dorNY = Math.abs(n.dot(y));
private FloatBuffer generateNormals(FloatBuffer positions, Mesh mesh) { FloatBuffer normals = BufferUtils.createFloatBuffer(positions.capacity()); for (int i = 0; i < positions.capacity(); i += 3) { float x = positions.get(i); float y = positions.get(i + 1); float z = positions.get(i + 2); Vector3f n = new Vector3f(); List<Triangle> triangles = getTrianglesSharingIndex(i / 3, mesh); for (Triangle t : triangles) { t.calculateNormal(); n.addLocal(t.getNormal()); } n.normalizeLocal(); normals.put(n.x).put(n.y).put(n.z); // normals.put(0).put(0).put(0); } normals.flip(); return normals; }
CollisionResult cr = new CollisionResult(intersection, distance); cr.setGeometry(patch); cr.setContactNormal(hit.getNormal()); results.addCollision(cr); return intersection; cr.setGeometry(patch); results.addCollision(cr); cr.setContactNormal(hit.getNormal()); return intersection; results.addCollision(cr); cr.setGeometry(patch); cr.setContactNormal(hit.getNormal()); return intersection;