Skip to content

TransformedBbox.contains has less-than-optimal semantics #12057

Closed
@anntzer

Description

@anntzer

TransformedBbox inherits the contains() method from Bbox, which only checks separately that x is between xmin and xmax, and that y is between ymin and ymax. This means that a TransformedBbox with 45° rotation will incorrectly believe to contain() points that are "in the non-covered corners" (xref #12052).

It's not clear whether we actually need TransformedBbox.contains to work for non-axis-aligned Bboxes (perhaps Patches are better structures for that), but the current behavior seems to be just a good way to shoot oneself in the foot. Either we should fix the implementation of contains() (I think(?) we can just apply the inverse-transform to the point and check whether it is in the original, untransformed Bbox), or at least TransformedBbox.contains should raise some exception when called and the Bbox is not axis-aligned.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions