精华内容
下载资源
问答
  • 向量的几何意义及编程应用(1)

    千次阅读 2017-09-16 10:56:09
    一点不假,向量几何在游戏编程中的地位不容忽视,因为在游戏程序员的眼中,显示屏幕就是一个坐标系,运动物体的轨迹就是物体在这个坐标系曲线运动结果,而描述这些曲线运动的,就是向量。使用向量可以很好的模拟物理...

    转载自:http://blog.csdn.net/popy007/article/details/376934

    <1>简单的2-D追踪

    Andre Lamothe说:“向量几何是游戏程序员最好的朋友”。一点不假,向量几何在游戏编程中的地位不容忽视,因为在游戏程序员的眼中,显示屏幕就是一个坐标系,运动物体的轨迹就是物体在这个坐标系曲线运动结果,而描述这些曲线运动的,就是向量。使用向量可以很好的模拟物理现象以及基本的AI。

    现在,先来点轻松的,复习一下中学知识

    向量v
    (用粗体字母表示向量)也叫矢量,是一个有大小有方向的量。长度为1的向量称为单位向量,也叫幺矢,这里记为E。长度为0的向量叫做零向量,记为0,零向量没有确定方向,换句话说,它的方向是任意的。

    一、向量的基本运算



    1、向量加法:a+b等于使b的始点与a的终点重合时,以a的始点为始点,以b的终点为终点的向量。

    2、向量减法:a-b等于使b的始点与a的始点重合时,以b的终点为始点,以a的终点为终点的向量。

    3、 数量乘向量:k*a,k>0时,等于a的长度扩大k倍;k=0时,等于0向量;k<0时,等于a的长度扩大|k|倍然后反向。

    4、向量的内积(数量积、点积): a.b=|a|*|b|*cosA 等于向量a的长度乘上b的长度再乘上ab之间夹角的余弦。
       它的几何意义就是a的长度与ba上的投影长度的乘积,或者是b的长度与ab上投影长的乘积,它是一个标量,而
    且可正可负。因此互相垂直的向量的内积为0。

    5、向量的矢积(叉积): a x b = |a|*|b|*sinA*v = c, |a|是a的长度,|b|是b的长度,A是ab之间的不大于180的夹角,v是与a,b所决定的平面垂直的幺矢,即axbab都垂直。在右手坐标系下,a,b,c构成右手系,即右手拇指伸直,其余四指按由ab的不大于180度的角卷曲,此时拇指所指方向就是c的方向。因此axb!=bxa。如果是左手系,那么上图中a x b = -c ,即a,b-c构成左手系。a xb的行列式计算公式如上图右边所示。两个向量的矢积是一个向量。

    6、正交向量的内积:互相垂直的两个向量是正交的,正交向量的内积为零。a.b = |a|.|b|*cos(PI/2) = |a|.|b|*0 = 0。

    二、向量的性质

    没有下面的这些性质做基础,我们后面向量技巧的推导将无法进行。

    1) a + b = b + a
    2) (a + b) + c = a + (b +c)
    3) a + 0 = 0 + a =a
    4) a + (-a) = 0
    5) k*(l*a) = (k*l)*a = a*(k*l)
    6) k*(a + b) = k*a + k*b
    7) (k + l)*a = k*a + l*a
    8) 1*a = a

    9) a.b = b.a
    10)a.(b + c) = a.b +a.c
    11)k*(a.b) = (k*a).b = a.(k*b)
    12)0.a = 0
    13)a.a = |a|^2


    三、自由向量的代数(分量)表示

    1、向量在直角坐标中的代数表示方法:

    a=(x,y)



    其中x,y分别是向量在x轴和y轴上的分量。任何一个在直角坐标轴上的分量为(x,y)的向量都相等。比如上图中的每个向量都表示为(-2,1)。

    或者写成a=x*i+y*j,ij的线性组合,这里i是x轴方向的单位向量(1,0),j是y轴方向的单位向量(0,1),因此i正交于j。任意一个2-D向量都可以表成ij的线性组合。

    |i| = |j| = 1

    2、向量的代数(分量)表示的运算:

    向量加法分量表示:a+b=(xa,ya)+(xb,yb)=(xa+xb,ya+yb)

    向量减法分量表示:a-b=(xa,ya)-(xb,yb)=(xa-xb,ya-yb)

    向量的内积(数量积、点积)分量表示:

    a.b
    =(xa * i + ya * j).(xb * i + yb * j)
    = xa * i * xb * i + xa * i * yb *j + ya * j * xb * i + ya * j * yb * j
    =(xa * xb) * (i * i) + (xa * yb) * (i *j) + (xb * ya) * (i * j) + (ya * yb) * (j *j)
    = xa * xb + ya * yb


    3、向量长度(模)的计算以及单位化(归一化):

    a=(x,y),则
    |a| = |(x,y)| = |x*i + y*j| = sqrt(x^2*i^2 + y^2*j^2) = sqrt(x^2 + y^2),这里sqrt是开平方符号。

    a的单位向量为a/|a|,即(x,y)/sqrt(x^2 + y^2)。

    四、简单的2-D追踪

    现在,有了向量的基本知识,我们就可以分析一个常见的问题-屏幕上一点到另一点的追踪,其实这一问题也可理解为画线问题,画线的算法有很多:DDA画线法、中点画线法以及高效的Bresenham算法。但这些算法一般只是画一些两端固定的线段时所使用的方法,再做一些动态的点与点之间的跟踪时显得不很灵活。使用向量的方法可以很好的解决此类问题。

    现在假设你正在编写一个飞行射击游戏,你的敌人需要一种很厉害的武器-跟踪导弹,这种武器在行进的同时不断的修正自己与目标之间的位置关系,使得指向的方向总是玩家,而不论玩家的位置在哪里,这对一个水平不高的玩家(我?)来说可能将是灭顶之灾,玩家可能很诧异敌人会拥有这么先进的秘密武器,但对于你来说只需要再程序循环中加入几行代码
    ,它们的原理是向量的单位化和基本向量运算。

    首先我们要知道玩家的位置(x_player, y_player),然后,我们的导弹就可以通过计算得到一个有初始方向的速度,速度的方向根据玩家的位置不断修正,它的实质是一个向量减法的计算过程。速度的大小我们自己来设置,它可快可慢,视游戏难易度而定,它的实质就是向量单位化和数乘向量的过程。具体算法是:导弹的更新速度(vx_missile, vy_missile) = 玩家的位置(x_player, y_player) - 导弹的位置(x_missile, y_missile),然后再对(vx_missile, vy_missile)做缩小处理,导弹移动,判断是否追到玩家,重新更新速度,缩小...

    看一下这个简单算法的代码:



    // 假设x_player,y_player是玩家位置分量
    // x_missile,y_missile是导弹位置分量
    // xv_missile,yv_missile是导弹的速度分量

    // 让我们开始吧

    float n_missile ; // 这是玩家位置与导弹位置之间向量的长度
    float v_rate ; // 这是导弹的速率缩放比率

    // 计算一下玩家与导弹之间的位置向量
    xv_missile = x_player-x_missile ; // 向量减法,方向由导弹指向玩家,x分量
    yv_missile = y_player-y_missile ; // y分量

    // 计算一下它的长度
    n_missile = sqrt( xv_missile*xv_missile + yv_missile*yv_missile ) ;

    // 归一化导弹的速度向量:
    xv_missile /= n_missile ;
    yv_missile /= n_missile ;

    // 此时导弹的速率为1,注意这里用速率。
    // 导弹的速度分量满足xv_missile^2+yv_missile^2=1
    // 好!现在导弹的速度方向已经被修正,它指向玩家。
    // 由于现在的导弹速度太快,为了缓解一下紧张的气氛,我要给导弹减速
    v_rate = 0.2f ; // 减速比率
    xv_missile *= v_rate ; // 这里的速率缩放比率,你可以任意调整大小
    yv_missile *= v_rate ; // 可以加速:v_rate大于1;减速v_rate大于0小于1,这里就这么做!

    // 导弹行进!导弹勇敢的冲向玩家!
    x_missile += xv_missile ;
    y_missile += yv_missile ;

    // 然后判断是否攻击成功

    现在,你编写的敌人可以用跟踪导弹攻击玩家了。你也可以稍加修改,变为直线攻击武器。这样比较普遍。
    基本的跟踪效果用向量可以很好的模拟。

    此时,我们只用到了所述向量知识的很少的一部分。其他的知识会慢慢用到游戏中。这次先介绍到这里。
    下次我将说说利用向量模拟2-D物体任意角度返弹的技巧:)但是!别忘了复习一下向量的基础知识,我们要用到它们。

    展开全文
  • 两个向量的夹角怎么算

    千次阅读 2020-12-23 16:19:07
    展开全部按以下公式求:cos s=向量a和向量b的内积/(向62616964757a686964616fe78988e69d8331333365656638量a的长度与向量b的长度的积),s为向量a、b之间的夹角。如果是坐标形式;a=(x1,y1),b=(x2,y2),a*b=x1x2+y1...

    展开全部

    按以下公式求:cos s=向量a和向量b的内积/(向62616964757a686964616fe78988e69d8331333365656638量a的长度与向量b的长度的积),s为向量a、b之间的夹角。如果是坐标形式;a=(x1,y1),b=(x2,y2),a*b=x1x2+y1y2,|a|=√(x1^2+y1^2),|b|=√(x2^2+y2^2),cos=[x1y1+x2y2] / [√(x1^2+y1^2)√(x2^2+y2^2)]

    知识拓展:

    在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。与向量对应的只有大小,没有方向的量叫做数量(物理学中称标量)。

    向量的记法:印刷体记作粗体的字母(如a、b、u、v),书写时在字母顶上加一小箭头“→”。 [1]  如果给定向量的起点(A)和终点(B),可将向量记作AB(并于顶上加→)。在空间直角坐标系中,也能把向量以数对形式表示,例如Oxy平面中(2,3)是一向量。

    在物理学和工程学中,几何向量更常被称为矢量。许多物理量都是矢量,比如一个物体的位移,球撞向墙而对其施加的力等等。与之相对的是标量,即只有大小而没有方向的量。一些与向量有关的定义亦与物理概念有密切的联系,例如向量势对应于物理中的势能。

    几何向量的概念在线性代数中经由抽象化,得到更一般的向量概念。此处向量定义为向量空间的元素,要注意这些抽象意义上的向量不一定以数对表示,大小和方向的概念亦不一定适用。因此,平日阅读时需按照语境来区分文中所说的"向量"是哪一种概念。不过,依然可以找出一个向量空间的基来设置坐标系,也可以透过选取恰当的定义,在向量空间上介定范数和内积,这允许我们把抽象意义上的向量类比为具体的几何向量。

    展开全文
  • 向量点乘与向量叉乘的意义

    万次阅读 2018-08-15 15:47:27
    这是博客原文:向量点乘与叉乘的几何意义。我主要是为了方便自已以后添加和查找。 向量的点积公式为:a * b = |a| * |b| * cosθ,点积的结果是数量而不是向量所以点积也被称为数量积或者内积,是a向量在b向量上...

    今天学习OpenGL的时候,看到教程上面光照部分关于向量乘积之间的的代码,由于之前没有好好学习数学,所以感到十分的懵逼,在网上看了一个博客之后感到豁然开朗。这是博客原文:向量点乘与叉乘的几何意义我主要是为了方便自已以后添加和查找

    向量的点积公式为:a * b = |a| * |b| * cosθ,点积的结果是数量而不是向量所以点积也被称为数量积或者内积,是a向量在b向量上投影的长度与b向量的长度的乘积,是标量,反映了两个向量之间的相似度,两向量越相似,它们的点积就越大。

    向量的叉乘公式为:a ^ b = |a| * |b| * sinθ,叉乘的结果是一个新的向量,所以也称为向量积,它垂直于相乘的a、b两向量所构成的平面。

    向量积被定义为: 

    模长:(在这里θ表示两向量之间的夹角(共起点的前提下)(0° ≤ θ ≤ 180°),它位于这两个矢量所定义的平面上。) 

    方向:a向量与b向量的向量积的方向与这两个向量所在平面垂直,且遵守右手定则。(一个简单的确定满足“右手定则”的结果向量的方向的方法是这样的:若坐标系是满足右手定则的,当右手的四指从a以不超过180度的转角转向b时,竖起的大拇指指向是c的方向。c = a ∧ b) 

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    特别的,在二维中,两个向量的向量积的模的绝对值等于由这两天向量组成的平行四边形的面积。 

    展开全文
  • 归一意义笔记

    千次阅读 2017-07-14 21:20:38
    归一在0-1之间是统计的概率分布,归一在-1–+1之间是统计的坐标分布。 假设有两个变量,都是均匀分布,X1范围是100000到200000,X2的范围是1到2。现在请在一张A4纸上画个坐标,点出这些点。很显然,你会点出很...

    归一化前:

    这里写图片描述

    归一化后:

    这里写图片描述

    在统计学中,归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1–+1之间是统计的坐标分布。

    假设有两个变量,都是均匀分布,X1范围是100000到200000,X2的范围是1到2。现在请在一张A4纸上画个坐标,点出这些点。很显然,你会点出很多处于同一直线上的点,我们称这条直线为L。也就是说,如果现在我们要做一个classification的话,X2几乎可以被忽略。X2很无辜的被干掉了,仅仅因为所谓量纲的问题。即便X2不被干掉,我们现在继续求解,来做 gradient descent。 很显然,如果某一步我们求得的下降方向不在直线L上,几乎可以肯定肯定这步不会下降。这就会导致不收敛,或者收敛但很慢。再来,我们做一遍归一化,全部化为[0,1]区间上。现在再在纸上画个坐标,点出这些点。好了,他们现在均匀的分布在一个圆的范围内。X2不会被忽略了,收敛的问题也解决了。

    在量纲不一而对比标准统一的时候需要做归一化,归一化也有很多方法,正确选择方法对数据处理的有效性和精确性影响很大。

    一张表有两个变量,一个是体重kg,一个是身高cm。假设一般情况下体重这个变量均值为60(kg),身高均值为170(cm)。1,这两个变量对应的单位不一样,同样是100,对于身高来说很矮,但对于体重来说已经是超重了。2,单位越小,数值越大,对结果的影响也越大,譬如170cm=1.7m。 简单讲,归一化的目的是可以用数值来直接进行比较,如果不归一化由于变量特性不同,同样加10,代表的意义不一样。

    展开全文
  • 模:向量的长度=>sqr(x^2+y^2+z^2) //各向量的平方相加,在开方 Unity API: Vector.magnitude 单位向量:长度为1的向量叫单位向量(1,1,1) //各个分量分别除以magnitude模长就等于单位向量 ... //单位化向量之...
  • 向量加法和向量乘法贯穿线性代数始终,起着很重要的作用,在线性代数中,向量的起点始终是坐标系的原点 先以二维向量举例 一个向量坐标由一对数组成,为了区分向量和点,将向量表示为列式,点表示为P(2,1) 第一个...
  • () 在水泥生产过程中,对原燃材料进行预均有什么意义 SQL server 数据库文件有三类,其中主数据文件的后缀为:A 、 .ndf B 、 .ldfC 、 .mdf D 、 .idf 1. 以下不是 C 语言的特点的是()。 A. 语言简洁紧凑 B. 能够...
  • 尤其是特征值还被称为矩阵的Eigenvalues ,然后看了知乎上的一些解释,也未能得到较好的理解,有些太理论:)然后本文就从自己现有知识体系下解释一下矩阵的特征向量与特征值的几何意义。有如下...
  • 主成分分析PCA以及特征值和特征向量意义 原文链接 主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫...
  • 特征向量的几何意义

    千次阅读 2012-05-27 11:22:31
    特征向量的几何意义 长时间以来一直不了解矩阵的特征值和特征向量到底有何意义(估计很多兄弟有同样感受)。知道它的数学公式,但却找不出它的几何含义,教科书里没有真正地把这一概念从各种角度实例地进行...
  • 向量点积 点积有两种好记好用的理解方法,他们都可以基于做功去理解: 假设b是个均匀分布的力场,a为收到其中作用进行的一个运动。 第一种基于几何: a点乘b等于一方(例b)投影到另一方(例a)的长度乘以另一方的...
  • 3D数学基础 - 坐标系、向量、矩阵

    千次阅读 2016-04-19 16:03:19
    一、坐标系 模型坐标系: 物体自身的坐标系,只描述自身各个顶点的情况。 在3D模型坐标系中,z方向前向如果是负值,我们称为右手坐标系,如果是正值,我们称为左手坐标系。在3DMax中使用了右手坐标系,...
  • unity3D数学基础-坐标系、向量、矩阵

    千次阅读 2021-10-06 14:16:04
    unity3D数学基础坐标系左右沙鸥坐标系功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants...
  • 问题十四:怎么可视球的法向量

    千次阅读 2017-01-14 00:08:27
    书上的原话是:visualize the normals with a color map,但是代码实现的是光线撞上球,然后色彩表(RGB)可视“撞点”的法向量。 开章第一句是“First, let’s get ourselves a surface normal so we can ...
  • 对于游戏行业程序员来说,向量“点乘”和“叉乘”是非常熟悉的运算。从代码上看他们很简单:(以下代码选自UE4的“Vector.h”) 点乘就是各分量逐项相乘,最终得到了一个标量: FORCEINLINE float FVector::Dot...
  • 1、旋转向量与旋转矩阵的联系:  处理三维旋转问题时,通常采用旋转矩阵的方式来描述。一个向量乘以旋转矩阵等价于向量以某种方式进行旋转。除了采用旋转矩阵描述外,还可以用旋转向量来描述旋转,旋转向量的长度...
  • 本文介绍了向量的定义、向量的模、负向量、单位向量、零向量以及向量加减法的三种实现方法。
  • 向量复习(一):定义、求解、四则运算、点积和叉积
  • 协方差矩阵相关概念、性质、应用意义及矩阵特征向量的用处
  • 主成分分析PCA以及特征值和特征向量意义

    万次阅读 多人点赞 2018-11-17 17:38:53
    引用《线性代数的几何意义》的描述:“矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度都大多不同的新向量。在这个变换的过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某一个向量或某些向量只...
  • 坐标变换(7)—旋转矩阵和特征向量

    千次阅读 2020-03-26 09:28:04
    I am still waiting for the day I’ll use mathematics ...在给定一个线性变换TTT,作用于一个非零的向量vvv,没有对vvv进行旋转,仅仅是对vvv进行了λ\lambdaλ倍的拉伸,如下式所示, T(v)=λv(1) T(v)=\lambda v...
  • 一、向量叉乘的几何意义 二、法向量的叉乘公式
  • 学数值计算还有复变函数了喔,矩阵忘干净了。又看了一遍 蓝棕 的相关的讲解,总结一下。...一个向量坐标由一对数构成,可以理解为从原点到终点的箭头,描述运动过程。比如,规定好坐标平面的单位,...
  • 求微分其实就是线性 ,即用直线近似代替取现, d x , d y dx,dy 近似代替原来那段曲线。 导数其实就是线性空间之间的线性变换 。 为了理解上面这句话,看下面两张图 θ 1 和 θ 2 分 别 是 x , y 的 函 数 ...
  •   写篇文章把自己对矩阵乘法的理解记录一下,有不对的地方欢迎指正。 1. 矩阵的列   在多数情况下,提到一维向量我们都会说列向量,为什么这么说呢,其实这里是有原因的。...
  • 方向向量和法向量的关系

    千次阅读 2020-12-22 21:11:16
    方向向量和法向量的关系2020-07-17 09:39:11文/王君婷法向量是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。由于空间内有无数个直线垂直于已知平面,因此一个平面都存在无数个法向量...
  • 特征值和特征向量(Eigenvalues and eigenvectors) 在线性代数中,一个线性变换的特征向量(eigenvector 或者 characteristic vector)是一个非零向量。将线性变换应用在它上面,它最多以一个标量因子进行伸缩变换...
  • 矢量控制中的坐标变换

    千次阅读 2018-11-07 13:51:02
    矢量控制当中,理论上比较困难的应该就是SVPWM和坐标变换两点,这次我就想把坐标变换再详细的说一说。首先会阐明坐标变换是什么以及为何常见形式是矩阵表示。然后抛开矩阵用复数推导电压方程,最后结合正在进行的...
  • 可视是前端可视图形是计算机图形学向量就是那个向量,高中学过的,你懂的树是那棵贼丑的树结果首先先看看本文最终的结果。是不是贼丑!是不是能在画展上卖个好价格!过程好了,话不多说, 看看这棵贼丑的树是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,334
精华内容 10,133
关键字:

向量坐标化的意义