zoukankan      html  css  js  c++  java
  • 向量

    向量


    定义与说明

    向量定义

    向量是一种同时具有大小方向的物理量
    几何意义上来说: 向量是有大小和方向的有向线段
    向量没有位置
    零向量是唯一一个没有方向的向量

    2点确定向量

    如果只有一点时,默认另一点为原点(0,0)

    Vector2 pointA = new Vector2(1,2);
    Vector2 pointB = new Vector2(3,4);
    
    //向量AB = (3-1, 4-2); xy分量分别相减,得到向量
    
    

    运算

    向量的大小(长度,模)

    各分量平方和的平方根(利用勾股定理可求)

    
    Vector2 u = new Vector(3, 4);
    
    // 计算向量u的长度
    float length = Math.sqrt(3*3, 4*4);
    
    

    向量与标量相乘

    各分量分别相乘, 返回一个向量
    向量长度扩大n倍,方向不变. 但如果n小于0,则方向反转

    
    float multiple = 5;
    
    // 向量u扩大5(multiple)倍
    Vector2 u = new Vector(3, 4);
    u.x *= multiple;
    u.y *= multiple;
    
    

    标准化向量

    向量/长度
    将向量化为方向不变长度为1的向量, 也称为单位向量法线

    
    Vector2 u = new Vector(3, 4);
    
    // 计算向量u的长度
    float length = Math.sqrt(3*3, 4*4);
    
    // 标准化向量u,使其长度为1,方向不变
    Vector2 Norm_u = new Vector(3/length, 4/length);
    
    
    

    向量加法

    各分量分别相加

    三角形法则

    当向量a的头连接着向量b的尾(通过平移向量). 然后从a的尾向b的头画一个向量c得到三角形
    将上述向量a,b平移得到平行四边形
    上述情况下向量 c = a+b; 这时向量c刚好是平行四边形的长对边


    当向量a的尾连接着向量b的尾(通过平移向量). 然后从a的头向b的头画一个向量c得到三角形
    将上述向量a,b平移得到平行四边形
    b-a则c指向b, 否则相反
    上述情况下向量 c = b-a; 这时向量c刚好是平行四边形的短对边

    向量点乘

    各对应分量乘积的和 u(x,y) 点乘 v(x1, y1) = x*x1 + y*y1
    点乘的结果是一个标量
    向量点乘可以用来求2向量之间的最小角度

    求2向量a和b的最小角度

    1. 通过移动2个向量,使其尾部重合
    2. 取最小角为θ(小于180的角)
    3. Math.acos( (a点乘b) / a的长度 乘以 b的长度 )
    4. 如果a,b为单位向量则可化简为: Math.acos(a 点乘 b)

    当 a点乘b == 0 a和b互相垂直
    当 a点乘b > 0 a和b夹角小于90度
    当 a点乘b < 0 a和b夹角大于90度

    向量叉乘

    叉积只能用于3D向量. 比如用于计算平面法线
    叉积的结果同时垂直于2个相乘的向量

    // 叉积如名字一样,把下面看成上下交叉相乘, 中间是最大的叉叉
    Vector3 u = (x, y, z);
    Vector3 v = (a, s, d);
    
    Vector3 uv = (yd - zs, za - xd, xs - ya);
    // uv同时垂直于向量u和v
    
    
  • 相关阅读:
    [kuangbin带你飞]专题十二 基础DP1 E
    hdu 1203 I NEED A OFFER! (01背包)
    hdu 2602 Bone Collector (01背包)
    hdu 4513 吉哥系列故事——完美队形II (manacher)
    hdu 2203 亲和串 (KMP)
    hdu 1686 Oulipo (KMP)
    hdu 1251 统计难题 (字典树)
    hdu 2846 Repository (字典树)
    hdu 1711 Number Sequence (KMP)
    poj 3461 Oulipo(KMP)
  • 原文地址:https://www.cnblogs.com/xueyoucd/p/5379938.html
Copyright © 2011-2022 走看看