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)