计算几何初步(点积叉积应用)

转自http://www.cppblog.com/shiming413/archive/2007/08/21/30494.html

一、点。

l 点的坐标A(x1, y1),B(x2, y2)

二、向量。

l 向量AB = (x2-x1, y2-y1) = (x3,y3) ,CD = (x4, y4)。

l 向量的模|AB| = sqrt(x3*x3 + y3*y3) 即向量的长度。

三、点积。

l 点积的结果为一个数值。

l 数值计算方法AB * CD = x3*x4 + y3*y4。

l 几何意义AB * CD = |AB| * |CD| * cos(a),a为向量AB逆时针转向CD的角度,0<=a<360,也可以认为是两向量的夹角,0<=a<=180。一般用于求夹角,a = acos( (AB * CD) / (|AB| * |CD|) )。也可:|CD| * cos(a) = AB * CD / |AB|,即向量CD在AB上的投影。

四、叉积。

l 叉积的结果为一个向量。

l AB×CD数值= x3*y4 – x4*y3。

l 方向由右手螺旋定则判定。

l 几何意义:AB×CD = |AB| * |CD| * sin(a),取绝对值即是以AB和CD为边的平行四边形面积。

五、线段相交的判定(判定线段AB和线段CD是否相交,属于哪种相交)。

l 规范相交:交点只有一个,且不是线段的端点。

1、充要条件:点A和点B在CD的两侧并且点C和点D在AB的两侧。

2、如何判断点A在向量CD的左侧还是右侧:CA×CD的数值大于0则左侧,小于0则右侧。于是CA×CD的数值和CB×CD的数值异号,点A和点B在CD的两侧,同理可判断点C和点D是否在AB的两侧(注意,必须严格异号)。

l 不规范相交:交点为某个线段的端点,甚至两线段有一段重合。

1、充要条件,一条线段的一个端点在另一条线段上。即A在CD上或B在CD上或C在AB上或D在AB上。

2、A在线段CD上的充要条件:

a) AC×AD = 0,几何意义,AC和AD组成的平行四边形的面积为0,即A、C、D三点共线。

b) A点在CD之间,A.x处于C.x和D.x之间并且A.y处于C.y和D.y之间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值