zoukankan      html  css  js  c++  java
  • 叉积与点积的介绍和几种基本运用

    转自http://blog.csdn.net/y990041769/article/details/38258761

    计算几何是算法竞赛的一大块,而叉积是计算机和的基础。

    首先叉积是计算说向量之间的叉积,那么我们可以这样定义向量,以及向量的运算符重载。

    首先在二维坐标下介绍一些定义:

    点:A(x1,y1),B(x2,y2)

    向量:向量AB=( x2 - x1 , y2 - y1 )= ( x ,  y );

    向量的模 |AB| = sqrt ( x*x+y*y );

    向量的点积:结果为 x1*x2 + y1*y2。

    点积的结果是一个数值。

    点积的集合意义:我们以向量 a 向向量 b 做垂线,则 | a | * cos(a,b)为 a 在向量 b 上的投影,即点积是一个向量在另一个向量上的投影乘以另一个向量。且满足交换律

    应用:可以根据集合意义求两向量的夹角,cos(a,b) =( 向量a * 向量b ) / (| a | * | b |) =  x1*x2 + y1*y2 / (| a | * | b |) 

    向量的叉积:结果为 x1*y2-x2*y1

    叉积的结果也是一个向量,是垂直于向量a,b所形成的平面,如果看成三维坐标的话是在 z 轴上,上面结果是它的模。

    方向判定:右手定则,(右手半握,大拇指垂直向上,四指右向量a握向b,大拇指的方向就是叉积的方向)

    叉积的集合意义:1:其结果是a和b为相邻边形成平行四边形的面积。

    2:结果有正有负,有sin(a,b)可知和其夹角有关,夹角大于180°为负值。

    3:叉积不满足交换律

    应用:

    1:通过结果的正负判断两矢量之间的顺逆时针关系

    若 a x b > 0表示a在b的顺时针方向上

    若 a x b < 0表示a在b的逆时针方向上

    若 a x b == 0表示a在b共线,但不确定方向是否相同

     2:判断折线拐向,可转化为判断第三点在前两的形成直线的顺逆时针方向,然后判断拐向。

    3:判断一个点在一条直线的那一侧,同样上面的方法。

    4:判断点是否在线段上,可利用叉乘首先判断是否共线,然后在判断是否在其上。

    5:判断两条直线是否想交(跨立实验)

    根据判断点在直线那一侧我们可以判断一个线段的上的两点分别在另一个线段的两侧,当然这是不够的,因为我们画图发现这样只能够让直线想交,而不是线段,所以我们还要对另一条线段也进行相同的判断就ok。

  • 相关阅读:
    1046 Shortest Distance (20 分)(模拟)
    1004. Counting Leaves (30)PAT甲级真题(bfs,dfs,树的遍历,层序遍历)
    1041 Be Unique (20 分)(hash散列)
    1036 Boys vs Girls (25 分)(查找元素)
    1035 Password (20 分)(字符串处理)
    1044 Shopping in Mars (25 分)(二分查找)
    onenote使用小Tip总结^_^(不断更新中...)
    1048 Find Coins (25 分)(hash)
    三个故事
    领导者的举止
  • 原文地址:https://www.cnblogs.com/shimu/p/5830335.html
Copyright © 2011-2022 走看看