一,凸包---2,极点

本文介绍了如何判断一个点是否是凸包的极点。极点的特性是存在一条直线,该直线一侧为空,另一侧包含所有凸包上的点。通过线性表示和向量叉乘的方法,可以确定点是否在三角形内,从而判断其是否为极点。文章提到了一个四重循环的初步算法,以及使用向量叉乘的优化方法,通过右手定则判断点是否在三角形内部。
摘要由CSDN通过智能技术生成

组成凸包的点有极性,叫做极点。反之,是非极点。
极点的特征是,过该点必然至少有一条直线,直线的一边为空,另一边是凸包上的所有点。

从下图可以看到,蓝色的点组成凸包,是极点。内部的青色的点是非极点。比如,p,q,r就是极点。
在这里插入图片描述

那如何判断当前点是否是极点呢?
根据1.1凸相关,可以知道,如果能线性表示,且系数均非负,且和为1时,即在三角形内部时,不是极点。很明显,下图的UV两点不是极点
在这里插入图片描述
在这里插入图片描述

而上图的1,2,3,4均为极点。

这就出现了第一个判断极点的算法—判断点是否在三角形内。

首先初始化所有的点都是极点。先构建三角形pqr,再找判断点s,如果s在三角形内,则s不是极点。很明显,这是个四重循环。时间复杂度O(n4)
在这里插入图片描述
那如何判断点在三角形内呢?用toleft测试,上图中,三角形pqr按照逆时针分为三个向量pq,qr,rs,点s在都在这三个向量的左边;如果按照顺时针,分为qp,pr,rq,那么点s都在这三个向量的右边。这说明点s在三角形内。
即,要么点均在各向量左,要么点均在各向量右。

在to-left判断时,邓老师用了海伦公式,实际上我更倾向于向量叉乘看符号,因为右手定则,能判断方向。比如sp和sq叉乘,sq和sr叉乘,sr和sp叉乘,这三个值在第三个方向上的分量如果同号,则点在三角形内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值