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

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
...全文
521 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
如果是凹的,判别就不是那么简单了吧?有谁可以解决?
目录 ㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的坐标 2 7. 求矢量夹角 2 ㈡ 线段及直线的基本运算 1. 点与线段的关系 3 2. 求点到线段所在直线垂线的垂足 4 3. 点到线段的最近点 4 4. 点到线段所在直线的距离 4 5. 点到折线集的最近距离 4 6. 判断圆是否在多边形内 5 7. 求矢量夹角余弦 5 8. 求线段之间的夹角 5 9. 判断线段是否相交 6 10.判断线段是否相交但不交在端点处 6 11.求线段所在直线的方程 6 12.求直线的斜率 7 13.求直线的倾斜角 7 14.求点关于某直线的对称点 7 15.判断两条直线是否相交及求直线交点 7 16.判断线段是否相交,如果相交返回交点 7 ㈢ 多边形常用算法模块 1. 判断多边形是否简单多边形 8 2. 检查多边形顶点的凸凹性 9 3. 判断多边形是否凸多边形 9 4. 求多边形面积 9 5. 判断多边形顶点的排列方向,方法一 10 6. 判断多边形顶点的排列方向,方法二 10 7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17 14.求肯定在给定多边形内的一个点 17 15.求从多边形外一点出发到该多边形的切线 18 16.判断多边形的核是否存在 19 ㈣ 圆的基本运算 1 .点是否在圆内 20 2 .求不共线的三点所确定的圆 21 ㈤ 矩形的基本运算 1.已知矩形三点坐标,求第4点坐标 22 ㈥ 常用算法的描述 22 ㈦ 补充 1.两圆关系: 24 2.判断圆是否在矩形内: 24 3.点到平面的距离: 25 4.点是否在直线同侧: 25 5.镜面反射线: 25 6.矩形包含: 26 7.两圆交点: 27 8.两圆公共面积: 28 9. 圆和直线关系: 29 10. 内切圆: 30 11. 求切点: 31 12. 线段的左右旋: 31 13.公式: 32

4,499

社区成员

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

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