Re: Beginner Question
- To: mathgroup at smc.vnet.net
- Subject: [mg66584] Re: [mg66561] Beginner Question
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sun, 21 May 2006 00:29:22 -0400 (EDT)
- References: <200605200847.EAA06360@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 20 May 2006, at 17:47, akil wrote:
> Hi,
>
> Suppose I have three 2D points A, B, C.
> And two points, namely A and B form a line.
>
> How can I determine in mathematica on which side, (so which half-
> plane formed by) of the line, point C is.
>
> So when I input three points I want to know if the third point is
> on the left or right side of the half plane formed by the line
> (ray) A,B.
>
> Appreciate any help.
>
One way is simply to work out the (linear) Cartesian equation of the
line through A,B and then substitute the coordinates of point C into
the linear "dual" of the line. Positive answers will correspond to
point on one side and negative to points on the other. Here is an
example. Let's consider four points P,Q,R,S as follows:
P = {1, 2}; Q = {3, 4}; R = {-3, 5}; S = {2, -5};
We are going to take the line PQ and determine if R and S are on the
same or opposite sides of the line. The picture looks like this:
Show[Graphics[{Line[{P, Q}],
Map[{PointSize[0.03], Point[#]} &, {
P, Q, R, S}]}], AspectRatio -> Automatic, PlotRange -> All];
Here is how to get the linear function:
linFun = Eliminate[{x, y} == Q + t*(P - Q), t] /.
Equal -> Subtract
-x + y - 1
Here is how we perform our checks:
linFun /. Thread[{x, y} -> R]
7
linFun /. Thread[{x, y} -> S]
-8
So the points lie on opposite sides of the line. If you look
carefully at the above method you can see that positive answers will
correspond to points lying "to the left and above" and negative
answers to points to "the right and below".
Andrzej Kozlowski
Tokyo, Japan
- References:
- Beginner Question
- From: akil <akil39@gmail.com>
- Beginner Question