![]() |
unit IsClockWise;
interface
implementation
/// Aeai?eoi ii?aaaeaiey iai?aaeaiey ia?a?eneaiey aa?oei iieeaiia ( e ni?aeaie? ia oi?iue)
Function IsClockWise(P:TPolygon):Boolean;
Var i : Integer;
e : T2DEdge;
et : TPos;
pt : T2DPoint;
Begin
Result := True;
et :=BETWEEN;
// iaeoe oi?eo neaaa eee ni?aaa io ?aa?a
For i:=0 To P.size-1 Do Begin
e := p._Edge;
If (E.org.Y<>E.dest.Y) Then Begin //
pt.x := (E.org.X+E.dest.x)/2+0.1;// na?aaeia io?acea e aua 0.1<-(caanu eae ?ac ia oi?iinou)
pt.y := (E.org.y+E.dest.Y)/2;
et := __classifyE(pt,E);
Break;
End;
P.advance(CLOCKWISE);
End;
If _pointInPolygon(pt,P)=INSIDE Then Begin
Case et of
RIGHT:Result := True;// anee oi?ea aioo?e iieeaiia e ni?aaa, oi cae?ooea ii ?aniaie no?aeea CLOCKWISE
LEFT :Result := False; // anee oi?ea aioo?e iieeaiia e neaaa, oi cae?ooea i?ioea ?aniaie no?aeee COUNTER_CLOCKWISE
End;//Case
End Else Begin
Case et of
LEFT :Result := True; // anee oi?ea nia?o?e iieeaiia e neaaa, oi cae?ooea ii ?aniaie no?aeee CLOCKWISE
RIGHT:Result := False;// anee oi?ea nia?o?e iieeaiia e ni?aaa, oi cae?ooea i?ioea ?aniaie no?aeee COUNTER_CLOCKWISE
End;//Case
End;
End;
end.
THE COPYRIGHT of THIS DOCUMENT IS THE PROPERTY OF Victor Nekrasov.
All rights reserved. No part of this documentation may be reproduced by any means в any material form
(including photocopying or storing it в any electronic form) without the consent of the Copyright Owner or under the terms of a licence and/or
confidentiality agreement issued by the Copyright Owner, Victor Nekrasov. Applications for the
copyright owners permission to reproduce any part of this documentation should be addressed to, Victor Nekrasov, vinek@list.ru
© 1998-2023 Victor Nekrasov