如何求一封闭多边形是逆时针还是顺时针方向(100分)

  • 主题发起人 主题发起人 angelsoft
  • 开始时间 开始时间
A

angelsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
已知一封闭任意多边形,可以是凹或凸多边形,现已知沿着任一条边对该多边形遍历一遍,
请问遍历的方向是顺时针方向还是逆时针方向!!!!![red][/red]

 
好像不太容易,请教数学家吧
 
好象可以用面积来求?去看图形学!
 
用面积如何求得是顺时针或逆时针,好象不可能啊,这是两个不同的问题啊?
还请高手继续赐教!!!!!!!!!!!!!!!!!!!!!
 
先写一个求线段方向的函数,然后计算累计角度:
function GetDirection(X1,Y1,NX,NY : double):Double;
var
BufLen,Direction : Double;
begin
BufLen := Sqrt(Sqr(X1-NX)+Sqr(Y1-NY));
if (Abs(NX-X1)< 10e-300) then begin
if (Abs(Y1-NY)< 10e-300) then begin
//等于没有移动}
end
else begin
if (Y1-NY)>0 then Direction := PI/2
else Direction := 3*PI/2;
end;
end
else begin
if ArcTan((Y1-NY)/(NX-X1))>0 then begin
if (Sin((Y1-NY)/BufLen)>0) then
Direction := ArcTan((Y1-NY)/(NX-X1))
else
Direction := ArcTan((Y1-NY)/(NX-X1))+PI;
end
else begin
if (Sin((Y1-NY)/BufLen)>0) then
Direction := ArcTan((Y1-NY)/(NX-X1))+PI
else begin
Direction := ArcTan((Y1-NY)/(NX-X1));
if (Direction = 0) and (X1 > NX) then Direction := PI;
end;
end;
end;
if Direction < 0 then Direction := 2 * PI + Direction;
Result := -Direction;
end;

 
吕大侠,累加角度求出来又如何,不论顺时针求累加角还是逆时针求累加角,和都是相等的啊???
 
对于凹多边形,很难定义是顺时针旋转还时逆时针旋转,所以不好解答。
如果时凸多边形,到是比较简单。
 
对,用累计角度,三角形顺时针角之和为180,逆时针就变为360*3-180了.
 
(1找Y最大点 x,y
(2)得到最大点的下一点x&amp;acute;,z'
(3) if (x'>x) 顺
否则
 
呵呵!还没搞定啊!
 
问题已经解决,感谢各位赐教,实际上CDYXL兄所说不错,是和面积有关,根据所求面的正负
就可以判断是顺时针还是逆时针
 
后退
顶部