各位高手,已知折线的开始、内点、结束坐标,怎样才能确定它是顺时针还是逆时针方向?

cloudrain 2002-04-22 09:35:58
我有以下坐标表示的折线:
StartPoint (200。35,342。13)
CharacterPoint (314。35,231。34),(238。12,590。23),(870。23,234。78)
EndPoint (500。23,478。14)
有何方法判断它的走向是顺时针还是逆时针方向?TXU
...全文
542 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzwu 2002-05-14
  • 打赏
  • 举报
回复

原始问题中起点Ps、终点Pe、和三特征点P1,P2,P3的位置大体分布如下:


P1
P3


Ps



Pe
P2

如果特征点作为折线的端点,则 Ps-P1-P2 为顺时针, P1-P2-P3 为逆时针, P2-P3-Pe 也为顺时针。

如果特征点只是用作样条曲线或Bezier曲线的控制折线的端点,则最好能说明要拟合(或逼进)的曲线的类型和次数。在有三个控制点的情况下,如果所所要曲线不是二次的,则还会有拐点,也就是说,有的段为顺时针,另一段为逆时针。

AP 2002-05-13
  • 打赏
  • 举报
回复
我想你需要的是整体的排列方向,以下方法对非自相交的多边形有效。

1 找出该多边形最靠上(或下的一个点)
2 找出该点的上一点及下一点(按排列顺序)将形成一个三角形
3 这时的判断已经很容易

原理:可以根据多边形最靠外(上/下/左/右)的顶点的排列确定其排列顺序。
xqr 2002-05-13
  • 打赏
  • 举报
回复
本人在2002-05-12 11:31:00的回贴中,关于内点判别法,也就是点与多边形的包含关系测试,这在Win API中有现成的函数 PtInRegion 可供使用.于是,多边形轮廓边走向不难判断.
xqr 2002-05-12
  • 打赏
  • 举报
回复
应指明所谓"顺时针逆时针"的具体含义,否则难于讨论.
如果是指封闭多边形轮廓边的走向,即指轮廓上某一边(向量)相对于内邻点(在多边形内的近邻点)的运动方向.则判别过程如下:
1.设某一轮廓边为a->b,在其左侧任取一近邻点P.
2.采用经典的内点判别法,若左侧近邻点P位于多边形内,则a->b为逆时针向;否则,为顺时针向.

上述方法适用于任意形状任意复杂的多边形.
xqr 2002-05-12
  • 打赏
  • 举报
回复
应指明所谓顺时针逆时针的具体含义,否则无法讨论.
如果是指封闭多边形轮廓边走向,即该边(向量)环绕其内邻点(位于多边形内的近邻点)的运动方向.判别过程为:
1.取任一轮廓边a->b,再在其左侧任取一近邻点P.
2.采用内点判别法,若P位于多边形内,则轮廓边a->b逆时针向.反之,为顺时针向.
上述方法适用于任意复杂多边形(凸/凹,或有空洞等).
zzwu 2002-05-12
  • 打赏
  • 举报
回复
看下面3点的走向:

p3


p2


p1

则从p1出发,按p1-p2-p3路径走时为顺时针,而

p3


p2


p1

则p1-p2-p3的走向为逆时针。

设 p1=(x1,y1), p2=(x2,y2), p3=(x3,y3)

求向量
p12=(x2-x1,y2-y1)
p23=(x3-x2,y3-y2)

则当 p12 与 p23 的叉乘(向量积)

p12 x p23 = (x2-x1)*(y3-y2)-(y2-y1)*(x3-x2)

为正时,p1-p2-p3 路径的走向为逆时针,
为负时,p1-p2-p3 走向为顺时针,
为零时,p1-p2-p3 所走的方向不变,亦即三点在一直线上。

你可以用简单的例子,如怕苦怕p1=(0,0),p2=(0,1),p3=(*,*)试

luckyluke 2002-05-09
  • 打赏
  • 举报
回复
用dylanwolf() 给的方法,在判断极角是否增长的同时还应该
同时判断所考虑的点与邻近点所形成的角的情况。

正在考虑这个问题,不知还有其他的判断方法。
crystalapple 2002-05-09
  • 打赏
  • 举报
回复
1. pB(x,y),pE(x,y),pM(x,y);
2. 求出pB,pE两点间的直线方程。
3. 将pM.x带入方程求pMY=?。
4. 判断:如果pMY〉pM.y,逆。反之,顺。
lpj 2002-04-22
  • 打赏
  • 举报
回复
你就算一下起点和终点和折线包围区域内一点的角度就行了,看角度的变化就知道了
cloudrain 2002-04-22
  • 打赏
  • 举报
回复
To dylanwolf():
能说再具体点吗?小弟还是菜鸟一个:-)
dylanwolf 2002-04-22
  • 打赏
  • 举报
回复
以 StartPoint位参照点,将其余点的坐标转换为极坐标。

如果这些点的极角一直在增加,则逆时针。反之,则顺时针。
dylanwolf 2002-04-22
  • 打赏
  • 举报
回复
reference point: (x1,y1)

character point:(x2,y2)

r= sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) , angle = atan((y2-y1)/(x2-x1))
mooney 2002-04-22
  • 打赏
  • 举报
回复
如果是凹的,判别就不是那么简单了吧?有谁可以解决?

4,502

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧