Skip to content

Doubling of coordinates in polygon clipping #5670

@stefanv

Description

@stefanv

The following code snippet takes coordinates for a hand, and clips it to a rectangular window. Of the returned polygon, the endpoints are duplicated.

from matplotlib import path, transforms
import matplotlib.pyplot as plt
import numpy as np

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.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]

print(len(poly_clipped[:, 0]), len(poly_clipped[:, 1]))

plt.plot(hand[:, 0], hand[:, 1], 'r-')
plt.plot(poly_clipped[:, 1], poly_clipped[:, 0], 'go-')
plt.show()

print(poly_clipped[-2:, :])

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions