/** * Given two points p1, p2 and a line passing through a,b check whether p1 and p2 are on the * same side of the line. In our case a,b are characters and p1, p2 are cameras */ public boolean isInSameHalfPlane(PVector p1, PVector p2, PVector a, PVector b) { PVector copyP1 = new PVector(p1.x, p1.y, p1.z); PVector copyP2 = new PVector(p2.x, p2.y, p2.z); PVector copyA = new PVector(a.x, a.y, a.z); PVector copyB = new PVector(b.x, b.y, b.z); copyB.sub(copyA); copyP1.sub(copyA); copyP2.sub(copyA); PVector p1a = copyB.cross(copyP1); PVector p2a = copyB.cross(copyP2); if (p1a.dot(p2a) > 0) { return true; } return false; }