zoukankan      html  css  js  c++  java
  • 矢量的叉积和点积计算

    • 标量(Scalar,标量是只有模没有方向的量,即距离)。
    • 矢量(Vector,也称为向量,矢量是有模和方向但没有位置的量,即方向加速度)。
    • 点(点是没有大小之分的位置)。

    1.标量k和矢量v的乘除:

      相乘:kv=(k*vx, k*vy, k*vz);

      相除:v/k=(vx/k, vy/k, vz/k); 只有矢量可以被标量除,标量不能被矢量除,那样是没有意义的。

     

    2.矢量a和标量b的加减:

      相加:a+b=(ax+bx, ay+by, az+bz);

      相减:a-b=(ax-bx, ay-by, az-bz);

     

    3.矢量的模:

      矢量的模是一个标量,可以理解为矢量在空间内的长度。

      公式:|v|=√(vx²+vy²+vz²);

     

    4.单位矢量(矢量归一化)

      单位矢量(即模为1的矢量),任何给定的非零矢量转换为单位矢量的过程被称为归一化。

      在矢量的头上加一个 ^ 表示单位矢量。

      公式:^v = v/|v|,v是任意非零矢量。

     

    5.矢量的点积 dot(a,b)

      点积的名称来源于其符号:a·b。

      点积的计算结果是一个模。

      点积的计算方式有两种:

        公式一: a·b = ax*bx + ay*by + az*bz;

        公式二: a·b = |a|*|b|*cosΘ; (可推出^a·^b = cosΘ).

      点积有很多重要的性质:

        性质一:点积可结合标量相乘。如:设k为标量,k(a·b)= a·(kb) = (ka).b;

        性质二:点积可以结合矢量的加减法。如:a·(b+c) = a·b + a·c; a·(b-c) = a·b + a·-c;

        性质三:矢量自己和自己的点积等于该矢量的模的平方。如:v·v = vxvx + vyvy + vzvz = |v|²;

        性质四:两个单位矢量的点积等于他们夹角的余弦值。如 ^a·^b = cosΘ;

        性质五:利用性质四可以计算出夹角的度数(当度数为0~180之间)。如:Θ = arcos(^a·^b),其中arcos是反余弦操作。

     

     6.矢量的叉积 

      叉积的名称也来源于其符号:aXb。

      与点积不同,叉积的结果是一个矢量。

      公式一:aXb = (ax,ay,az)X(bx,by,bz) = (aybz - azby, azbx - axbz, axby - byax);

      公式二:|aXb| = |a||b|sinΘ;

      【aXb≠bXa,即,叉积不满足交换律;但它满足反交换律 aXb = -(bXa);不满足结合律(aXb)Xc ≠ aX(bXc);】

      

      叉积最常见的用途是:

        1)计算垂直于一个平面、三角形、多边形的矢量。

        2)判断三角面片的朝向。

  • 相关阅读:
    Python之路(第二十篇) subprocess模块
    Python之路(第十九篇)hashlib模块
    Python之路(第十八篇)shutil 模块、zipfile模块、configparser模块
    Python之路(第十六篇)xml模块、datetime模块
    Java性能优化之编程技巧总结
    Java消息中间件入门笔记
    Java线程池实现原理与技术(ThreadPoolExecutor、Executors)
    Java系统高并发之Redis后端缓存优化
    Java实现一个简单的加密解密方法
    Java实现动态修改Jar包内文件内容
  • 原文地址:https://www.cnblogs.com/sweetXiaoma/p/8684489.html
Copyright © 2011-2022 走看看