判断三角形与点的关系的一种实现

在二维坐标系中,对三角形ABC和某一点P,设A(x1,y1)、B(x2,y2)、C(x3,y3)、P(x,y),如果向量AB×AP、BC×BP、CA×CP指向同一方向,则说明P点在三角形内部。
#include <iostream>
using namespace std;

struct Triangle
{
	int x1;
	int y1;
	int x2;
	int y2;
	int x3;
	int y3;
	Triangle(int tx1,int ty1,int tx2,int ty2,int tx3,int ty3)
	{
		x1=tx1;
		y1=ty1;
		x2=tx2;
		y2=ty2;
		x3=tx3;
		y3=ty3;
	}
};

bool InTriangle(Triangle t,int x,int y);


int main()
{
	Triangle t(0,0,4,0,2,4);
	cout<<InTriangle(t,9,0)<<endl;
	for(int x=0;x<10;x++)
		for(int y=0;y<10;y++)
		{
		   cout<<"x="<<x<<"y="<<y<<"是否在三角形中:"<<InTriangle(t,x,y)<<endl;
		}

}

bool InTriangle(Triangle t,int x,int y)
{
	int t1=(t.x2-t.x1)*(y-t.y1)-(x-t.x1)*(t.y2-t.y1);
	int t2=(t.x3-t.x2)*(y-t.y2)-(x-t.x2)*(t.y3-t.y2);
	int t3=(t.x1-t.x3)*(y-t.y3)-(x-t.x3)*(t.y1-t.y3);
	if(t1>0&&t2>0&&t3>0)
		return true;
	if(t1<0&&t2<0&&t3<0)
		return true;
	return false;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值