www.pudn.com > geometric.rar > ccw.m, change:2004-08-13,size:2764b


function flag = ccw(pt1,pt2,pt3)  % flag = ccw(pt1,pt2,pt3) % % CCW is an implementation of Sedgewick's algorithm (Algorithm's in C++, % Robert Sedgewick, 1992, Addison-Wesley, p350) for determining the sense of % rotation when traveling from pt1 to pt2 to pt3 (these are points in the % x,y plane). If this travel results in rotation through a counter clockwise % angle then +1 is returned which -1 is returned for a clockwise angle. A % special case is when the three points are colinear. In this case, if pt1 % is between pts 2&3 then -1 is returned, if pt2 is between pts 1&3 then +1 % is returned, and if pt3 is between pts 1&2 then 0 is returned.  %  % Note that each point is a 2 element vector giving x first then y. % % G.F. Margrave January 1994 % % NOTE: It is illegal for you to use this software for a purpose other % than non-profit education or research UNLESS you are employed by a CREWES % Project sponsor. By using this software, you are agreeing to the terms % detailed in this software's Matlab source file.   % BEGIN TERMS OF USE LICENSE % % This SOFTWARE is maintained by the CREWES Project at the Department % of Geology and Geophysics of the University of Calgary, Calgary, % Alberta, Canada.  The copyright and ownership is jointly held by  % its author (identified above) and the CREWES Project.  The CREWES  % project may be contacted via email at:  crewesinfo@crewes.org %  % The term 'SOFTWARE' refers to the Matlab source code, translations to % any other computer language, or object code % % Terms of use of this SOFTWARE % % 1) Use of this SOFTWARE by any for-profit commercial organization is %    expressly forbidden unless said organization is a CREWES Project %    Sponsor. % % 2) A CREWES Project sponsor may use this SOFTWARE under the terms of the  %    CREWES Project Sponsorship agreement. % % 3) A student or employee of a non-profit educational institution may  %    use this SOFTWARE subject to the following terms and conditions: %    - this SOFTWARE is for teaching or research purposes only. %    - this SOFTWARE may be distributed to other students or researchers  %      provided that these license terms are included. %    - reselling the SOFTWARE, or including it or any portion of it, in any %      software that will be resold is expressly forbidden. %    - transfering the SOFTWARE in any form to a commercial firm or any  %      other for-profit organization is expressly forbidden. % % END TERMS OF USE LICENSE   dx1=pt2(1)-pt1(1); dy1=pt2(2)-pt1(2); dx2=pt3(1)-pt1(1); dy2=pt3(2)-pt1(2);  if( dx1*dy2 > dy1*dx2 ) flag=1; return; end if( dx1*dy2 < dy1*dx2 ) flag=-1; return; end  if( (dx1*dx2<0) | (dy1*dy2<0) ) flag=-1; return; end if( (dx1*dx1+dy1*dy1) < (dx2*dx2+dy2*dy2) ) flag=1; return; end  flag=0;