判断四边形凹凸性及凹点
来源:互联网 发布:拍摄后期制作软件 编辑:程序博客网 时间:2024/05/01 21:15
已知四边形四个点坐标 p1 = (x,y), p2 = (x,y), p3 = (x,y), p4 = (x,y)
判断凹凸性及凹点位置
t1 = (p4.x-p1.x)(p2.y-p1.y)-(p4.y-p1.y)(p2.x-p1.x)
t2 = (p1.x-p2.x)(p3.y-p2.y)-(p1.y-p2.y)(p3.x-p2.x)
t3 = (p2.x-p3.x)(p4.y-p3.y)-(p2.y-p3.y)(p4.x-p3.x)
t4 = (p3.x-p4.x)(p1.y-p4.y)-(p3.y-p4.y)(p1.x-p4.x)
if t1*t2*t3*t4 < 0:
return Concavequadrilateral(凹四边形)
if t1*t2*t3*t4 < 0:
return Convexquadrilateral(凸四边形)
if t1*t2 < 0 and t1*t4 < 0:
return t1
if t1*t2 < 0 and t2*t3 < 0:
return t2
if t2*t3 < 0 and t3*t4 < 0:
return t3
if t3*t4 < 0 and t4*t1 < 0:
return t4
数学原理:
按照输入顺序依次将点连接起来
对于连续的三个点p0,p1,p2,另向量a=p1-p0,b=p2-p1
若是凸多边形,那么b相对于a一定是向逆时针方向旋转的
判断两向量的旋转方向,可以使用向量的叉积 a×b = x1×y2 - x2×y1
a×b > 0 b在a的逆时针方向
a×b = 0 b平行于a(共线)
a×b < 0 b在a的顺时针方向
要注意的是,对于最后一个点pn,还要和起始的两个点p0,p1判断一次。
- 判断四边形凹凸性及凹点
- 判断闭合曲线的凹凸性(比如判断四边形的凹凸情况)
- 051: 单调性与极值及凹凸性之型一极值点判断;型二不等式证明
- 判断多边形凹凸性
- 判断多边形凹凸性
- 输出顺序点判断凹凸多边形
- 判断点在凹凸多边形内部
- 判断点在凸四边形內
- C++判断点是否四边形内部
- poj2318toys判断点是否在四边形内
- 判断一个点在任意四边形内
- 判断点是否在凹多边形或交叉多边形内~
- uva11529 - Strange Tax Calculation 凹四边形个数
- 判断平面多边形的凹凸性
- 如何判断一个点在任意四边形内
- 判断一个点是否在给定的凸四边形内
- 已知四个点的连线,判断是否是四边形
- 判断多边形凹凸
- Ubuntu14.04 安装 Caffe+CUDA 7.5
- 2. 3种工厂模式
- 集群技术(百科)
- C#委托
- [BZOJ2049] [Sdoi2008]Cave 洞穴勘测
- 判断四边形凹凸性及凹点
- 虚函数
- 用递归法计算斐波那契数列的第n项
- Spring4 MVC Hibernate4集成
- C#中动态加载和卸载DLL
- ubuntu下安装coreseek出现的错误汇总
- LA_3026_HDU_1358_Period
- IP地址,子网掩码,网关,默认网关
- html5+javascript 简单的倒计时功能