MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem with finding angles between points in Cartesian plane

  • To: mathgroup at smc.vnet.net
  • Subject: [mg26087] Re: [mg26060] Problem with finding angles between points in Cartesian plane
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Tue, 28 Nov 2000 01:55:32 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

When I saw your question I could not  understand what you meant by the
"angle between two points"? There is really no such thing. At first I
assumed you meant the angle between the two vectors corresponding to  two
points, but looking at your formula I realized that you seemed to mean the
angle that the line through the two points makes with the x-axis (?).

Well, here is one (out of very many) ways that will compute this without
running into your problem:

angle[P_, Q_] := Arg[(Q - P).{1, I}]

Now we get:

In[3]:=
angle[{3, 4}, {3, 5}]

Out[3]=
Pi/2

However, this angle actually depend on the order in which the points are
given:

In[4]:=
angle[{3, 5}, {3, 4}]

Out[4]=
-(Pi/2)

If you prefer the answer not to depend on the order of the points you can do
this:

ClearAll[angle]

SetAttributes[angle, Orderless]

angle[P_, Q_] := Arg[(Q - P).{1, I}]


Now we get:

In[8]:=
angle[{3, 5}, {3, 4}]

Out[8]=
Pi/2

In[9]:=
angle[{3, 4}, {3, 5}]

Out[9]=
Pi/2


Another possible objection may be that this does definition of angle does
not work with symbolic expressions, in other words with your original
example we get:

In[13]:=
angle[{x1, y1}, {x1, y2}]

Out[13]=
Arg[I*(-y1 + y2)]

This however is really the way it should be since Mathematica know nothing
about y1 and y2 (they might be equal or complex !). In such cases its best
to apply FullSimplify:

In[14]:=
FullSimplify[%, y2 > y1]

Out[14]=
Pi/2 

-- 
Andrzej Kozlowski
Toyama International University
JAPAN

http://platon.c.u-tokyo.ac.jp/andrzej/
http://sigma.tuins.ac.jp/


on 00.11.22 3:55 PM, Blitzer at drek1976 at yahoo.com wrote:

> I would like to find the angle between 2 points on the Cartesian plane.
> However, if I use "ArcTan", it is not able to recognise that points with the
> same x-coordinates have an angle of 90 degrees between them. It returns
> "Indeterminate".
> eg. for a point A (x1, y1) and a point (x1, y2), to find the angle between
> them, I use ArcTan[(y2-y1)/(x1-x1)]. However, as the denominator is equal to
> "0", this function returns "indeterminate". Is there a way to get around
> this problem? Or is there other possible functions which can be used.
> I am dealing with a very large array of numbers and thus, it's not possible
> to check the coordinates individually.
> 
> Would be grateful for any help rendered. Thanks!
> 
> Derek
> 
> 
> 
> 
> 




  • Prev by Date: Re: Help for Symbolic matrix manipulations in mathematica?
  • Next by Date: Re: Problem with finding angles between points in Cartesian plane
  • Previous by thread: Re: Problem with finding angles between points in Cartesian plane
  • Next by thread: Re: Problem with finding angles between points in Cartesian plane