社区
数据结构与算法
帖子详情
有一些点组成不自相交的多边形,如何确定这些点是顺时针的还是逆时针的
chy_hs
2003-04-14 09:34:54
已知点的坐标,想要知道是顺时针的还是逆时针的
数学好的兄弟姐妹能不能给个算法?
先谢了
...全文
787
11
打赏
收藏
有一些点组成不自相交的多边形,如何确定这些点是顺时针的还是逆时针的
已知点的坐标,想要知道是顺时针的还是逆时针的 数学好的兄弟姐妹能不能给个算法? 先谢了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BlueSky2008
2003-04-16
打赏
举报
回复
不需要找凸点。只要计算叉积就行了。
如果点的顺序是a,b,c
只要判断矢量ab*ac的符号就可以了。
寻开心
2003-04-16
打赏
举报
回复
选择一个凸点,没有什么难度。前面已经说了,选择x或者y坐标当中数值最大或者最小的点必然是凸点。一次循环就搞定的。
fengpoer
2003-04-16
打赏
举报
回复
怎么选择一个凸点呢?我想有点难度吧?
寻开心
2003-04-15
打赏
举报
回复
抱歉,上边的例子当中的a和b点标反了。
例子当中a,b,c,d, g, h都是凸点, e和f则不是。
所以选择def和efg的时候得到的结果和事实相反。
寻开心
2003-04-15
打赏
举报
回复
楼上:
不是这样的。
只有在凸点的时候找到这个三角形,然后使用你的方法才有效,你的写法就是差乘公式的另外一种表达式而已。
可以自己构造一个凹多边形尝试一下就知道了。在凹点,你的三角形是在多边形外部的,判断结果将和实际结果恰好相反。例如下面的例子:
* a * b
* e * f
* c * d * g * h
这个例子当中,你连接def三角形,得到的结果就是顺时针,如果连接ace三角形得到的就是顺时针。
JK_10000
2003-04-14
打赏
举报
回复
相信用以下方法会比求凸点省时。
设有序点为a0,a1,a2,a3,a4,a5.....
在a0,a1的垂直平分线上,取一个离线段a0-a1足够近(请看备注1)并且不是垂足(b0)的点b1,使a0,a1,b1是顺时针方向的;
判断b1点是在多边形内还是多边形外;
结果:如果b1点是在多边形内,则原多边形是顺时针的;否则原多边形是逆时针的。
备注:
1.足够近---足够近的目的是使b0-b1不与除a0-a1以外的任意一条边相交
寻开心
2003-04-14
打赏
举报
回复
更正上面的说法: 例子当中a点是y最小点。
判断的另外一种方法,是把 ba和ca线段做成三维有向向量,然后使用差乘算法,判断结果的z数值得正负就知道了。
寻开心
2003-04-14
打赏
举报
回复
这个好办,找一个凸点,判断该点处的顺逆就可以了。
具体做法,找一个maxy或者maxx点,这样的点肯定是凸点。
然后判断这个点关联的两个边的关系,按照顶点的顺序得到的第一条边,可以计算它的方程,然后判断另外一个点在这条线断的左面还是右面,就可以知道顺逆了。
例如,以选择y数值最大的点作为判断点。 该点坐标是(Xa, Ya), 他的前一点是(Xb, Yb), 后一点是(Xc, Yc)。
那么判断对于有向线段ba来说,c点在右侧还是左侧就可以了。例如:
* b
* c
* a
就是逆时针方向。
* b
* c
* a
就是顺时针方向。
简单的说,你判断三角形bac的顺逆性就可以了。
Riemann
2003-04-14
打赏
举报
回复
我有一点不明:对于给定的点,它们应该不是按顺时针方向排列就是按逆时针方向排列吧!如果是这样,那么判断其中的顺序三点就够了。设三点为(x1,y1),(x2,y2),(x3,y3),它们构成一个三角形,计算行列式:
|x1 y1 1|
det= |x2 y2 1|
|x3 y3 1|
如果该行列式为正,则为逆时针方向,否则为顺时针方向。
ruanzheng13
2003-04-14
打赏
举报
回复
叉乘
寻开心
2003-04-14
打赏
举报
回复
有趣!
楼上认为 b1点好取?使得a0 a1 b1 是顺时针方向容易?判断点在多边形内还是外很省时?
选择凸点只要一遍循环就可以得到。
接下来的顺逆时针判断只要一个差乘计算就可以得到。
计算量已经很小了。
多边形
点
集排序--针对凸
多边形
,按
逆时针
方向进行排序
在平面直角坐标系中,给定一个
点
序列,判断这些
点
是否能够构成凸
多边形
,并且按照
顺时针
方向输出这些
点
。
jihe.zip_point in polygon_
多边形
顺时针
_
点
在
多边形
内_
顺时针
逆时针
判
点
在凸
多边形
内,顶
点
按
顺时针
或
逆时针
给出,在
多边形
边上返回0
多边形
相交
计算
用vc + mapobjects开发的源代码,用鼠标对
多边形
进行操作,实现了
多边形
的
相交
计算功能。
判断
点
与
多边形
的位置关系
通过画一个
多边形
,然后在
多边形
内外任意位置
点
一些
点
,就可以判断
点
与
多边形
的位置关系。
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章