def intersect(self, origin, ray): origin_sub_sphere = origin - self.origin b = 2 * origin_sub_sphere.dot(ray) c = origin_sub_sphere.dot(origin_sub_sphere) - self.radius*self.radius intersect = "NONE" for col in solveQuadratic(1, b, c): if (col != "NONE" and col > 0.0): if (intersect == "NONE" or col < intersect): intersect = col return intersect
def test_solveQuadratic(self): self.assertEqual(solveQuadratic(3, -2, -8), [2.0, -4.0/3]) self.assertEqual(solveQuadratic(1, -2, 1), [1.0, 1.0]) self.assertEqual(solveQuadratic(2, 0, 4), ["NONE", "NONE"]) self.assertEqual(solveQuadratic(0, 2, -4), ["NONE", 2.0])