判断点在四边形内

判断点在四边形内
bool isPointInRect(PtCloud p, vector &vertex)
{
float a= (vertex[1].x - vertex[0].x)(p.y - vertex[0].y) - (vertex[1].y - vertex[0].y)(p.x - vertex[0].x);
float b = (vertex[2].x - vertex[1].x)(p.y - vertex[1].y) - (vertex[2].y - vertex[1].y)(p.x - vertex[1].x);
float c = (vertex[3].x - vertex[2].x)(p.y - vertex[2].y) - (vertex[3].y - vertex[2].y)(p.x - vertex[2].x);
float d = (vertex[0].x - vertex[3].x)(p.y - vertex[3].y) - (vertex[0].y - vertex[3].y)(p.x - vertex[3].x);
if ((a > 0 && b > 0 && c > 0 && d > 0) || (a < 0 && b < 0 && c < 0 && d < 0))
return true;
else
return false;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是判断坐标是否四边形内的 Python 代码: ```python def is_inside_quad(x, y, quad): """ 判断坐标是否四边形内 参数: x: 待判断的横坐标 y: 待判断的纵坐标 quad: 四边形的四个顶坐标,格式为 [(x1,y1), (x2,y2), (x3,y3), (x4,y4)] 返回值: 如果四边形内,返回 True,否则返回 False """ # 计算四边形边向量及法向量 vectors = [] norms = [] for i in range(len(quad)): j = (i + 1) % len(quad) vector = (quad[j][0] - quad[i][0], quad[j][1] - quad[i][1]) vectors.append(vector) norms.append((vector[1], -vector[0])) # 判断是否四边形内 for i in range(len(norms)): vector = (x - quad[i][0], y - quad[i][1]) if vectors[i][0] * vector[1] - vectors[i][1] * vector[0] < 0: return False if norms[i][0] * vector[1] - norms[i][1] * vector[0] < 0: return False return True ``` 使用示例: ```python # 定义四边形的四个顶坐标 quad = [(1, 1), (5, 2), (6, 6), (2, 5)] # 判断 (3, 3) 是否四边形内 print(is_inside_quad(3, 3, quad)) # 输出 True # 判断 (4, 4) 是否四边形内 print(is_inside_quad(4, 4, quad)) # 输出 True # 判断 (6, 3) 是否四边形内 print(is_inside_quad(6, 3, quad)) # 输出 False # 判断 (0, 0) 是否四边形内 print(is_inside_quad(0, 0, quad)) # 输出 False ``` 注意:这只是一个简单的实现,如果四边形是凸多边形或带孔多边形,可能需要使用更复杂的算法来判断是否在多边形内。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值