怎么判断1个点在一个不规则的四边形内
1个回答
展开全部
这个是属于计算几何算法了,判断一个点是否属于任意多边形,就要以这个点为横坐标,画一条横向射线,如果和多边形的交点个数为奇数则在多边形内,否则桐迹就在外,特殊情况:
1、当射线与其中局清并一条边重合,那么边忽略不计;
2、当射线正敏与其中一顶点相交(外凸),交点只能计算一个;
3、当射线与其中一顶点相交(内凹),交点不应被计算;
下面为伪代码:
count
←
0;
以(x,y)为端点,作从右向左的射线l;
for
多边形的每条边s
do
if
(x,y)在边s上
then
return
true;
if
s不是水平的
then
if
s的一个端点在l上
if
该端点是s两端点中纵坐标较大的端点
then
count
←
count+1
else
if
s和l相交
then
count
←
count+1;
if
count
mod
2
=
1
then
return
true;
else
return
false;
1、当射线与其中局清并一条边重合,那么边忽略不计;
2、当射线正敏与其中一顶点相交(外凸),交点只能计算一个;
3、当射线与其中一顶点相交(内凹),交点不应被计算;
下面为伪代码:
count
←
0;
以(x,y)为端点,作从右向左的射线l;
for
多边形的每条边s
do
if
(x,y)在边s上
then
return
true;
if
s不是水平的
then
if
s的一个端点在l上
if
该端点是s两端点中纵坐标较大的端点
then
count
←
count+1
else
if
s和l相交
then
count
←
count+1;
if
count
mod
2
=
1
then
return
true;
else
return
false;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询