判断点和线的关系

这里判断点和线的关系要用到矢量乘法

1.矢量叉积 

设矢量P  =  (x1,y1)   ,Q  =  (x2,y2)

则矢量叉积定义为:   P  × Q  =  x1*y2  -  x2*y1    得到的是一个标量

显然有性质  P  × Q  =  -  (  Q  × P  )    P  × (  -  Q  )  =  -  (  P  × Q  )

如不加说明,下面所有的点都看作矢量,点的乘法看作矢量叉积;

叉乘的重要性质:

 >  若 P  × Q   >  0  ,   则P  在Q的顺时针方向

 >  若 P  × Q   <  0  ,   则P  在Q的逆时针方向

 >  若 P  × Q   =  0  ,   则P  与Q共线,但可能同向也可能反向



int getRefLine0Line1(POINT l0s,POINT l0e,POINT l1s,POINT l1e)
{
int ret = 0;


float dx0 = (l0e.x - l0s.x),dy0 = (l0e.y - l0s.y);
float dx1 = (l1e.x - l1s.x),dy1 = (l1e.y - l1s.y);

float val = dx0 * dy1 - dx1 * dy0;
if(val < 0) //Line0在Line1上
{
ret = 0;
}
else if(val > 0)//Line0在Line1下
{
ret = 1;
}
else //Line0在Line1里
{
ret = 2;
}


return ret;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值