计算几何-点在线段哪侧,在矩形内部,在多边形内部

一、点乘和叉乘

1、点积(点乘):

(1)向量a*向量b=|a|*|b|*cos(a,b),向量b在a上的投影长度=|b|.cos(a,b)

(2)c = a*b,c是一个标量,是一个数,c大于0说明a和b夹角小于90度,c小于0说明a和b夹角大于90度。c等于0说明a和b垂直正交!

(3)用途:判断两个向量的夹角([0度, 180度])。

延伸知识点

(4)向量c=a-b,则c^2 = a^2 + b^2 - 2|a|*|b|*cos(a,b)

 

2、外积(叉乘):

(1)c=a×b=|a|*|b|*sin(a,b),c是一个向量(法向量),方向满足向量a和b的右侧定则(四肢顺着向量a的方向转外向量b,这是大拇指方向就是向量c的方向)。

(2)c=向量a×b,c大于0说明b在a的左侧,c小于0说明b在a的右侧,c等于0说明a和b共线。

(3)用途:判断b和a的哪一侧

(4)a×b的数值大小 = a和b所构成的平行四边形的面积

具体计算方式如下:

 

 

 

二、点、线、面之间的关系

判断点和直线之间的左右关系:

点和直线的左右关系本质是以直线为向量作为基准方向,判断点的方位。

 

 

1、判断三点共线

二维坐标系,有三点A(x1, y1)、B(x2, y2)、C(x3, y3)

(1)面积法

S=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2) 

(2)斜率法

(y2-y1)/(x2-x1) == (y3-y1)/(x3-x1)

(3)向量法

(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0

(4)c++中,小数相等不能使用等号,需要误差判断:

|(y3−y1)(x2−x1)−(y2−y1)(x3−x1)|<=1e−6

(5)海伦公式(初中数学)

计算三角形的三边的长度分别为a、b和c,则p=1/2*(a+c+c),即半周长

面积s=sqrt(p*(p-a)*(p-b)*(p-c))

 

 

 

2、点是否在矩形内部

图上图所示,p是否在矩形ABCD内部?

方法:向量AB和向量CD(注意向量的方向!)【左右两条边】是否包住点p,向量DA和向量BC【上下两条边】是否包住点p?

(AB×Ap)*(CD×Cp)>=0 && (DA×Dp)*(BC×Bp)>= 0

3、点是否在多边形内部

射线法:

 

 

 

-- over --

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值