Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

simoncozens
Copy link
Collaborator

Literally edge cases, this deals with intersections on coincident lines.

@simoncozens simoncozens marked this pull request as draft December 15, 2023 11:38
@simoncozens
Copy link
Collaborator Author

There's still an issue with coincident lines which don't share a start or end point.

@simoncozens simoncozens marked this pull request as ready for review December 15, 2023 11:45
pt = lineLineIntersections(*seg1, *seg2)[0][0]
assert pt == (250.0, 1000.0)
seg3 = [(250, 810), (250, 500)]
assert lineLineIntersections(*seg1, *seg3) == []
Copy link
Member

@anthrotype anthrotype Dec 15, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't seg1 and seg3 intersect at (250, 810)?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh sorry I see now (was typing from mobile), the segments actually are coincident, sitting on top of one another. In theory they intersect in all the points where they overlap, but since we need to return some finite results it's ok to return [] in this edge case

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait I'm still confused... I think you swapped the two cases.

all the three segments above seg1, seg2 and seg3 are parallel to one another and the Y axis, have the same x coordinate 250; seg1 and and seg2 are the ones that overlap one another, they also share the starting point but coincide for the entire length of seg1 (which is a subset of seg2). So I'd expect we would return [] in this case. Whereas you are returning (250.0, 1000.0) which is their starting point.

On the other hand, seg1 and seg2, while being parallel (x coordinates are all 250), they only touch where seg1 ends and seg3 starts, i.e. (250, 810) -- so I would expect the latter to be returned as their intersection, not []

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants