Calculate on which side of a line a point is
Asked Answered
D

1

6

I need to figure out how to calculate on which side of a line a point is. I'm searching a really fast and simple collision algorithm because I just need to know on what side a object is to define a collision state.

Just like:

if(x > line.x)
    return EnumSide.LEFT;

But the line needs to be diagonally. Any ideas?

Dang answered 26/3, 2014 at 17:27 Comment(3)
possible duplicate of Determine which side of a line a point liesKramlich
Evaluate the function at the questionable x and determine if the y value is greater or less than the function'sGreeting
Possible duplicate of How to tell whether a point is to the right or left side of a lineFlinty
S
12

Given a directed line from point p0(x0, y0) to p1(x1, y1), you can use the following condition to decide whether a point p2(x2, y2) is on the left of the line, on the right, or on the same line:

value = (x1 - x0)(y2 - y0) - (x2 - x0)(y1 - y0)

if value > 0, p2 is on the left side of the line.
if value = 0, p2 is on the same line.
if value < 0, p2 is on the right side of the line.

And here's a figure to explain it all:

Which side of line is the point?

Sulphone answered 26/3, 2014 at 17:34 Comment(3)
The explanation is given in terms of determinants and cross products in this answer and its comments: https://mcmap.net/q/135760/-how-to-tell-whether-a-point-is-to-the-right-or-left-side-of-a-lineTradeswoman
I think you made a mistake. (x2 - x0)(y1 - y0) should be (y1 - y0)(y2 - y1)Coulombe
@JohnDemetriou I think what you are thinking is it should be (y1 - y0)(x2 - x0) which of course is what he put just reversed. I doubt it should be (y1-y0)(y2-y1), x needs to be involved.Wadsworth

© 2022 - 2024 — McMap. All rights reserved.