如何判断一个点是在三角形的内部还是外部

本文介绍了一种判断点C相对于线段AB位置关系的方法,通过向量叉乘来确定点是否在AB的顺时针或逆时针方向。接着,详细阐述了如何判断点是否位于三角形内部,即当点满足在三角形所有边的顺时针方向时,该点在三角形内部。算法适用于不按顺时针排列的三角形顶点。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/sixdaycoder/article/details/79791389
在讲这个办法之前,我们先看另一个问题。

如果给定一条线段AB和点C,能否判断出来C和AB的位置关系呢?

这里的位置关系是指C是在向量AB上,还是在AB的顺时针方向,又或者是在AB的逆时针呢?
在这里插入图片描述
这里的C就是我们说的在AB的逆时针方向。
那么我们如何判断C和AB的位置关系呢?
先给出代码,然后给予解释:

//i输入 : 向量A->B,点p
//return true : A,B,p构成顺时针
struct Point{
	double x,y;
};
Point P[N], test;

// 沿A,B,p三个点是不是顺时针 
bool Is_clockwise(Point A, Point B, Point p){
	return (B.x-A.x)*(p.y-A.y) - (B.y-A.y)*(p.x-A.x) < 0;
}

判断 p 是否在A-B的顺时针方向,做AB向量(A指向B,下同),Ap向量,两个向量叉乘,如果结果 < 0,说明是顺时针。否则有两种情况:p在AB上或在其逆时针方向。

向量叉乘:
向量a 和b 叉乘, 得到一个垂直于a 和b 的向量a ×b , 它的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值