|
|
@@ -10,6 +10,7 @@ |
|
|
from nose.tools import assert_raises, assert_equal
|
|
|
from matplotlib.testing.decorators import image_comparison
|
|
|
import matplotlib.pyplot as plt
|
|
|
+from matplotlib import transforms
|
|
|
|
|
|
|
|
|
def test_readonly_path():
|
|
|
@@ -113,6 +114,41 @@ def test_marker_paths_pdf(): |
|
|
plt.ylim(-1, 7)
|
|
|
|
|
|
|
|
|
+def test_path_no_doubled_point_in_to_polygon():
|
|
|
+ hand = np.array(
|
|
|
+ [[1.64516129, 1.16145833],
|
|
|
+ [1.64516129, 1.59375],
|
|
|
+ [1.35080645, 1.921875],
|
|
|
+ [1.375, 2.18229167],
|
|
|
+ [1.68548387, 1.9375],
|
|
|
+ [1.60887097, 2.55208333],
|
|
|
+ [1.68548387, 2.69791667],
|
|
|
+ [1.76209677, 2.56770833],
|
|
|
+ [1.83064516, 1.97395833],
|
|
|
+ [1.89516129, 2.75],
|
|
|
+ [1.9516129, 2.84895833],
|
|
|
+ [2.01209677, 2.76041667],
|
|
|
+ [1.99193548, 1.99479167],
|
|
|
+ [2.11290323, 2.63020833],
|
|
|
+ [2.2016129, 2.734375],
|
|
|
+ [2.25403226, 2.60416667],
|
|
|
+ [2.14919355, 1.953125],
|
|
|
+ [2.30645161, 2.36979167],
|
|
|
+ [2.39112903, 2.36979167],
|
|
|
+ [2.41532258, 2.1875],
|
|
|
+ [2.1733871, 1.703125],
|
|
|
+ [2.07782258, 1.16666667]])
|
|
|
+
|
|
|
+ (r0, c0, r1, c1) = (1.0, 1.5, 2.1, 2.5)
|
|
|
+
|
|
|
+ poly = Path(np.vstack((hand[:, 1], hand[:, 0])).T, closed=True)
|
|
|
+ clip_rect = transforms.Bbox([[r0, c0], [r1, c1]])
|
|
|
+ poly_clipped = poly.clip_to_bbox(clip_rect).to_polygons()[0]
|
|
|
+
|
|
|
+ assert np.all(poly_clipped[-2] != poly_clipped[-1])
|
|
|
+ assert np.all(poly_clipped[-1] == poly_clipped[0])
|
|
|
+
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
|
import nose
|
|
|
nose.runmodule(argv=['-s', '--with-doctest'], exit=False)
|