def test_point(self): p = Point(3, 4) q = Point(8, 16) p_inf = Point(float('inf'), 1) #y axis points downwards p_ccw = Point(4, -3) self.assertAlmostEqual(p.length(), 5) self.assertAlmostEqual(p.ccw(), p_ccw) self.assertAlmostEqual(p_ccw.cw(), p) self.assertAlmostEqual(p[0], 3) self.assertAlmostEqual(p[1], 4) self.assertFalse(p_inf.isFinite()) self.assertTrue(p.isFinite()) self.assertFalse(p.isNormalized()) self.assertTrue((p / p.length()).isNormalized()) self.assertFalse(p.isZero()) self.assertTrue((p * 0).isZero()) self.assertTrue((p + p.ccw().ccw()).isZero) self.assertAlmostEqual((q - p).length(), 13) self.assertGreater(q, p) self.assertGreaterEqual(q, p) self.assertEqual(p, p) self.assertNotEqual(p, q) self.assertLess(Point(1, 1), Point(1, 2)) self.assertLessEqual(p, p) self.assertTrue( Point.are_near(Point.polar(pi / 4, sqrt(2)), Point(1, 1))) self.assertAlmostEqual(sqrt(2), Point.L2(Point(1, 1))) self.assertAlmostEqual(2, Point.L2sq(Point(1, 1))) self.assertAlmostEqual(Point.middle_point(Point(), q), q / 2) self.assertAlmostEqual(Point.rot90(p), p.cw()) self.assertAlmostEqual( Point.lerp(0.2, Point(), Point(3, 4)).length(), 1) self.assertAlmostEqual(Point.dot(p, p_ccw), 0) self.assertAlmostEqual(Point.dot(p, p_inf), float('inf')) self.assertAlmostEqual(Point.dot(p, q), 88) #TODO this might be implemented incorrectly in lib2geom! self.assertAlmostEqual(Point.cross(p, q), -16) self.assertAlmostEqual(Point.distance(p, q), 13) self.assertAlmostEqual(Point.distanceSq(p, p_ccw), 50) self.assertAlmostEqual(Point.unit_vector(p), p / 5) self.assertAlmostEqual(Point.L1(p), 7) self.assertAlmostEqual(Point.L1(p_inf), float('inf')) self.assertAlmostEqual(Point.LInfty(q), 16) self.assertAlmostEqual(Point.LInfty(p_inf), float('inf')) self.assertTrue(Point.is_zero(Point())) self.assertFalse(Point.is_zero(p)) self.assertTrue(Point.is_unit_vector(p / 5)) self.assertFalse(Point.is_unit_vector(q)) self.assertAlmostEqual(Point.atan2(Point(1, 1)), pi / 4) self.assertAlmostEqual(Point.angle_between(p, p_ccw), -pi / 2) self.assertAlmostEqual(Point.abs(-p), p)
def test_point(self): p = Point(3, 4) q = Point(8, 16) p_inf = Point(float('inf'), 1) #y axis points downwards p_ccw = Point(4, -3) self.assertAlmostEqual(p.length(), 5) self.assertAlmostEqual(p.ccw(), p_ccw) self.assertAlmostEqual(p_ccw.cw(), p) self.assertAlmostEqual(p[0], 3) self.assertAlmostEqual(p[1], 4) self.assertFalse(p_inf.isFinite()) self.assertTrue(p.isFinite()) self.assertFalse(p.isNormalized()) self.assertTrue((p/p.length()).isNormalized()) self.assertFalse(p.isZero()) self.assertTrue((p*0).isZero()) self.assertTrue( (p + p.ccw().ccw()).isZero) self.assertAlmostEqual( (q-p).length(), 13) self.assertGreater(q, p) self.assertGreaterEqual(q, p) self.assertEqual(p, p) self.assertNotEqual(p, q) self.assertLess( Point(1, 1), Point(1, 2) ) self.assertLessEqual(p, p) self.assertTrue( Point.are_near( Point.polar(pi/4, sqrt(2)), Point(1, 1) )) self.assertAlmostEqual(sqrt(2), Point.L2(Point(1, 1))) self.assertAlmostEqual(2, Point.L2sq(Point(1, 1))) self.assertAlmostEqual( Point.middle_point(Point(), q), q/2 ) self.assertAlmostEqual( Point.rot90(p), p.cw() ) self.assertAlmostEqual( Point.lerp(0.2, Point(), Point(3,4)).length(), 1) self.assertAlmostEqual(Point.dot(p, p_ccw), 0) self.assertAlmostEqual(Point.dot(p, p_inf), float('inf')) self.assertAlmostEqual(Point.dot(p, q), 88) #TODO this might be implemented incorrectly in lib2geom! self.assertAlmostEqual(Point.cross(p, q), -16) self.assertAlmostEqual(Point.distance(p, q), 13) self.assertAlmostEqual(Point.distanceSq(p, p_ccw), 50) self.assertAlmostEqual(Point.unit_vector(p), p/5) self.assertAlmostEqual(Point.L1(p), 7) self.assertAlmostEqual(Point.L1(p_inf), float('inf')) self.assertAlmostEqual(Point.LInfty(q), 16) self.assertAlmostEqual(Point.LInfty(p_inf), float('inf')) self.assertTrue(Point.is_zero(Point())) self.assertFalse(Point.is_zero(p)) self.assertTrue(Point.is_unit_vector(p/5)) self.assertFalse(Point.is_unit_vector(q)) self.assertAlmostEqual(Point.atan2(Point(1, 1)), pi/4) self.assertAlmostEqual(Point.angle_between(p, p_ccw), -pi/2) self.assertAlmostEqual(Point.abs(-p), p)