• 向量点积、叉积的意义


    1.向量点积意义

    ①二维向量A和B点积(结果为标量)定义为:A.dot(B) = |A|*|B|*cos(a)

    比较重要的用途(数学意义)为:

    ②得到向量夹角。(根据cos(a)计算得到)

    ③得到对应单位分量上的长度。(当向量B为单位向量时,则|A|*cos(a)表示向量A在向量B上的单位分量)

    可用于凸多边形的碰撞检测(分离轴定理)

     

    2.向量叉积意义

    ①二维向量A和B叉积(结果为标量)定义为:A.cross(B) = |A|*|B|*sin(a)

    比较重要的用途(数学意义)为:

    ②得到向量夹角。(根据sin(a)计算得到)

    ③得到的两个向量组成的三角形面积S=A.cross(B)/2

    ④得到两个向量之间的顺逆关系:> 0 表示 A在B的顺时针方向; <0表示A在B的逆时针方向; =0 表示则为共线向量(有可能同向,有可能反向);

    ⑤由上面两个向量之间的结果,从同一点出发的两个向量,就可以得到点和线之间的位置(点在线的左右或者在线上)关系。

    可用于凸多边形的碰撞检测(射线检测):其核心的思路是,判断这个点,和多边形每条边的位置关系。在一个多条边围成的区域,点在一条边的右侧,这个点可能在多边形内部,也可能在外部。但是如果判断完点和每一条边的左右关系,如果在右边的边是奇数个,那么点就在内部,如果是偶数,那么点就在外部。通过这个规则,就可以判断,点和多边形的碰撞关系。有两个注意点,多边行必须是凸多边形,并且如果点落在边上,我们算在左边,这样落在边上是算在内部。

    详情可参看《C 实现射线检测多边形碰撞》

     

    3.三维向量叉积(结果为向量),得到一个垂直于另外两条向量所组成平面的向量。

     

  • 相关阅读:
    Redis从入门到精通:初级篇(转)
    Spring配置中的"classpath:"与"classpath*:"的区别研究(转)
    maven常用命令
    JUC-线程池调度-ScheduledThreadPool
    JUC-线程池
    JUC-线程八锁
    JUC-ReadWriteLock
    JUC-Condition和Lock实践-线程按序交替执行
    Linux 查看.so中导出函数
    nginx配置反向代理
  • 原文地址:https://www.cnblogs.com/chevin/p/5909656.html
Copyright © 2020-2023  润新知