Deriving an angle from three points

Jacques Hausser jacques.hausser at unil.ch
Wed Dec 16 03:47:21 EST 2009


> 
> On 12/15/09 10:21 PM, Mark Swindell wrote:
>> 40,116
>> 98,186
>> 132,118
>> 
>> How would one determine the angle created from three points, such as those above?

Hi Mark,

I'm using the following handlers. SurfaceTriangle is used to determine if you compute the outer (>180) or inner angle with summit c in calcangle.

HTH

Jacques

function SurfaceTriangle a,c,b
   ----------------------------------------------------------
   -- a,c,b: points
   -- returns twice the surface of triangle a,c,b
   -- the result is signed, positive if points follow each other clockwise,
   -- negative otherwise.
   -- aligned points return zero.
   ----------------------------------------------------------
   put ((item 1 of c - item 1 of a)*(item 2 of b - item 2 of a)\
   - (item 1 of b - item 1 of a)*(item 2 of c - item 2 of a)) into aire
   return aire
end SurfaceTriangle

function calcAngle a,c,b
   ----------------------------------------------------------
   -- a,c,b : points. 
   -- returns angle between ca and cb in degrees
   ----------------------------------------------------------
   put Distance(c,b) into da
   put Distance(a,c) into db
   put Distance(a,b) into dc
   put (da + db + dc)/2 into p
   put sqrt(p*(p-dc)/(db*da)) into lecos
   if lecos > 1 then put 1 into lecos
   if lecos < -1 then put -1 into lecos
   put acos(lecos) * 180 / pi into alpha
   put 2 * alpha into alpha
   if SurfaceTriangle(a,c,b) then
      return alpha
   else
      return 360-alpha
   end if
end calcAngle




More information about the Use-livecode mailing list