<图形学> 向量的代数计算

1. 概述

这里简单总结几个向量的运算 以三维向量为例

2. 向量点乘/点积(Dot Product)

  • 点乘比较简单,是相应元素的乘积的和:

  • a·b=|a|·|b|cos<a,b>
    V1( x1, y1,z1) · V2(x2, y2,z2) = x1x2 + y1y2+z1*z2

  • Vector3.Dot也叫点积。因为该过程相当于乘上了一个Cos弧度角,所以可以用来判断两条向量是否同向 .

  • 注意:Dot的返回值为float类型 并没有值范围(-1,1),有些博主写的范围,这个经过验证是错误的

    void Start () {
            Vector3 a = new Vector3(1, 1, 1);
            Vector3 b = new Vector3(1, 1, 1);
            Debug.Log("Vector3.Dot(a, b):"+Vector3.Dot(a, b));
        }
    
  • 在这里插入图片描述

3. 向量叉乘/向量积(Cross Product)

  • 几何含义:c是垂直a、b所在平面,且以|b|·sinθ为高、|a|为底的平行四边形的面积

  • 根据叉乘定义 c = a × b,其结果c也是一一个向量,并且:
    在这里插入图片描述

  • 其坐标计算如下:
    在这里插入图片描述

  • 性质如下:
    1、数值上等于a,b向量所构成的平行四边形的面积 / 基于两向量的三角形的面积的两倍
    2、向量叉乘的结果为垂直于两向量组成平面的向量,可以根据顶点信息求取顶点法线,得到的结果为符合右手坐标系的向量

  • 注:
    如果P1、P2、P3为平面不共线的三个点,则该平面的法向量为:
    N → = P 1 P 2 → × P 1 P 3 → \overrightarrow{N } =\overrightarrow{P1 P2} \times \overrightarrow{P1 P3} N =P1P2 ×P1P3

  • 补充:
    两向量a,b叉乘,结果为一个垂直于两向量的向量(a,b向量所构成的平面的非单位法向量),如何判断其方向?
    利用左手定则
    当a,b为顺时针时,法向量方向面朝自己,当a,b为逆时针时,法向量远离自己。

3.1 叉乘的应用

  • 判断两个线段是否相交 存在两种情况①相交,端点不在另一条线段上②相交,端点在另一条线段上
    在这里插入图片描述
    在这里插入图片描述

  • 判别思路:
    对于情况1,判断P3是否在P1,P2之间,P1是否在P3,P4之间,得出是否为情况1;对于情况2,仅需判断是否有三个点共线(P1,P2,P3 / P1,P2,P4 / P1,P3,P4 / P2,P3,P4)

void IsIntersected(Vector3 P1,Vector3 P2,Vector3 P3,Vector3 P4)
{
	
}

平面法向量

  • 指垂直于平面的向量 并且该向量为单位向量
    如下图所示 在unity中法向量为单位向量
    在这里插入图片描述
    在这里插入图片描述
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值