矢量运算

shader入门精要读书笔记06 数学基础

倖福魔咒の 提交于 2020-01-30 14:50:39
第四章 数学基础 一、坐标系 笛卡尔坐标系,分为二维三维。 二维坐标系 OpenGL是左下角为0,DirectX是左上角。 三维坐标系,3个坐标轴也被称为基矢量,长度为1的基矢量叫做标准正交基,长度不唯1的叫正交基。 三维笛卡尔坐标系又分为左手坐标系与右手坐标系。 Unity使用的是左手坐标系,摄像头的观察空间是右手坐标系(摄像头前方为z轴的负方向)。 二、点和矢量 矢量:有方向有模,没有位置。 点:只是一个位置。 矢量的加减乘除运算,模运算。 单位矢量:被归一化的矢量。通过在矢量上方加个^来表示是矢量的模。 单位矢量的运算:通过矢量除以矢量的模来进行计算。 单位矢量计算通常使用在法线方向、光源方向等。 矢量的点积(内积/点乘): 点积就是可以确定两个矢量的方向关系。投影长度=标量。 点乘结果>0 :两个矢量方向关系为<90°。(=0 : 垂直,<0 : >90°) 求适量的模可以将矢量对其自身进行点乘,运算后开方。 a·b=|a||b|cos夹角 矢量的叉积(外积/叉乘): 叉积结果是矢量,不满足交换律,叉积的结果是得到一个同时垂直于这两个矢量的新矢量。 使用左手定则,右手定则来判断在不同坐标系中,新得到的矢量方向。 |a×b|=|a||b|sin夹角 我们可以通过点乘(cos值)来确定某两个矢量的夹角关系。 还可以通过叉乘判断一个面的正面反面(通过确定面上的三个点的顺时针

SVPWM总结

帅比萌擦擦* 提交于 2020-01-22 13:47:26
空间矢量算法 是以逆变器和电机作为一个整体来研究的。目标是产生电机定子的圆形磁场 模态选择, 上管导通 状态为1 下管导通 状态为0 那么状态为000 001 010 011 100 101 110 111 分别计算合成矢量的幅值 状态001 以 为基准点进行计算 状态001 AO= BO= CO= 蓝色的箭头是黄色和绿色的箭头合成的,合成以后,状态001对应的矢量为 与水平夹角为-120度 模值为Ud 状态010 AO= BO= CO= 合成以后。对应010的矢量如下图 状态011 AO= ,BO= ,CO= 合成以后,状态011 的矢量 状态100 AO= BO= CO= 合成以后 状态 100 对应的矢量 如下 模值为Ud ,与水平的夹角为Ud 状态101 AO= BO= CO= 合成的向量为 与水平线的夹角为-60度, 状态110 AO= BO= CO= 状态110合成的空间矢量是 模值为 Ud 状态111 状态000 合成的矢量的模值都是0 将上面的6种状态列写成表格 状态001 与水平线夹角120度 模值为 状态010 与水平线的夹角为120度 模值为 状态011 与水平线的夹角为0度 模值为 状态100 与水平线的夹角为0度 模值为Ud 状态101 与水平线的夹角为-60度, 模值为Ud 状态110 与水平线的夹角为60度 模值为Ud 综上这些电压适量 构成一个六边形

CSharp中的Vector结构

混江龙づ霸主 提交于 2020-01-13 13:57:46
本节将开发一个结构Vector,来演示运算符重载,这个Vector结构表示一个三维矢量。如果数学不是你的强项,不必担心,我们会使这个例子尽可能简单。三维矢量 只是三个(double)数字的一个集合,说明物体和原点之间的距离,表示数字的变量是x、y和z,x表示物体与原点在x方向上的距离,y表示它与原点在y方向上的距离, z表示高度。把这3个数字组合起来,就得到总距离。例如,如果x=3.0, y=3.0, z=1.0,一般可以写作(3.0, 3.0, 1.0),表示物体与原点在x方向上的距离是3,与原点在 y方向上的距离是3,高度为1。 矢量可以与矢量或数字相加或相乘。在这里我们使用术语"标量"(scalar),它是数字的数学用语-- 在C#中,就是一个double。相加的作用是很明显的。如果先移动(3.0, 3.0, 1.0),再移动(2.0, -4.0, -4.0),总移动量就是把这两个矢量加起来。矢量的相加是指把每个元素分别相加,因此得到(5.0, -1.0,-3.0)。此时,数学表达式总是写成c=a+b,其中a和b是矢量,c是结果矢量。这与使用Vector结构的方式是一样的。 注意: 这个例子是作为一个结构来开发的,而不是类,但这并不重要。运算符重载用于结构和类时,其工作方式是一样的。 下面是Vector的定义-- 包含成员字段、构造函数和一个ToString()重写方法

内积空间

爷,独闯天下 提交于 2019-12-03 14:34:10
一 向量空间与内积空间 向量空间也称作线性空间,向量空间对向量线性组合封闭。如果 为向量空间 V 的一组基,则 仍在向量空间 V 中。在向量空间中,仅定义了数乘与向量加法运算。在此基础上,定义内积运算,通过内积运算,可以求解向量长度,向量间角度等概念,这就定义了内积空间。设向量为X, Y,X 长度定义为 , X,Y 间角度定义为 。 二 内积定义 在 空间上,有如下矢量 和 ,在几何中,矢量长度表示原点到其端点的距离,根据 Pythagorean 定理,有 。定义内积 ,则矢量 X 长度等于 ,这样建立其内积与长度关系。 在复矢量空间 中,有如下矢量 和 ,定义内积 。 如何理解复矢量内积?首先,针对单个复数 , 有 ,使用共轭乘法可求解复数长度。当两个不同复数共轭乘法时, ,其结果仍然为一个复数,可分解为实数分类与虚数分量。复矢量内积就是对所得复数相加得到一个结果,最终结果一般包括实数分量与虚数分量部分,即一般结果为 形式。 内积满足如下性质: 1)正性:如果 v 为非零向量, <v, v> > 0, 该性质对实矢量与复矢量均成立; 2)共轭对称性: ,针对复矢量,该等式成立,针对实矢量,共轭运算等于本身,则内积运算对称; 3)均匀性: , 针对复矢量时 c 为复数,实矢量时 c 为实数; 4)线性:<u + v, w> = <u, w> + <v, w>, <u, v + w>

矢量运算_向量积

匿名 (未验证) 提交于 2019-12-03 00:43:02
   向量积 ,数学中又称外积、叉积,物理中称矢积、叉乘,是一种在 向量空间 中向量的 二元运算 。 计算 \begin{equation*} \begin{array}{rl} =&\left[\begin{array}{ccc} a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{array}\right] \left[\begin{array}{c} b_1 \\ b_2 \\ b_3 \end{array}\right]\\ =&\left(a_y b_z-a_z b_y\right)\vec{i}+\left(a_z b_x-a_x b_z\right)\vec{j}+\left(a_x b_y-a_y b_x\right)\vec{k} \end{array} \end{equation*} 力学例子   假设一个刚体绕定轴转动,设转动的角速度 [rad/s] 用矢量 $\vec{\omega}\left(t\right)$ 表示,其大小表示转动快慢,方向为这个轴所在的方向,右手定则确定轴的正负方向。对于离轴距离为 $\vec{r}$ 的点而言,存在瞬时线速度: $$\vec{v}\left(t\right)=\vec{\omega}\left(t\right)\times\vec{r}\left(t\right)$$ 由公式可见,即使定常转速

CORDIC算法基本原理

▼魔方 西西 提交于 2019-12-02 08:40:31
引言 某些复杂的计算,例如三角函数和除法运算等涉及到大量浮点运算的计算任务,是数字电路天生的瓶颈所在。在某些场景下,可以使用查找表方法或者采用级数展开的方法来实现三角函数等运算功能。但是,这两种方法可能会占用大量的存储资源和硬件乘法计算单元,而想要节省资源,就要以牺牲精度为代价。 相对于前两种方法,CORDIC算法具有很大优势。首先,在计算过程中,它不使用任何的硬件乘法器单元,所涉及的只有移位和累加。然后,对于存储资源的占用,它仅仅需要少量的数据需要预先存储。在实际的数字电路设计中,可以将其设计为流水线方式或者是迭代复用方式,以提高运算速度或者是减少资源占用。 一、矢量旋转公式 CORDIC算法最最基本理论基础,是矢量旋转公式。即矢量 A ( x , y ) A\left( {x,y} \right) A ( x , y ) 顺时针旋转 θ \theta θ 之后,得到的矢量 ( x ′ , y ′ ) \left( {x',y'} \right) ( x ′ , y ′ ) 可以表示为 (式1) : x ′ = x cos ⁡ θ + y sin ⁡ θ , y ′ = y cos ⁡ θ − x sin ⁡ θ . \begin{array}{l} x' = x\cos \theta + y\sin \theta ,\\ y' = y\cos \theta - x\sin

机器人学导论学习笔记(一):第二章

馋奶兔 提交于 2019-11-26 07:48:01
空间描述概述 机器人操作的定义是指通过某种机构使零件和工具在空间运动,这自然就需要表达零件、工具以及机构本身的位置和姿态。为了定义和运用表达位姿的数学量,我们必须定义坐标系并给出表达的规则。 我们采用这样的一个体系,即存在着一个世界坐标系,我们所定义的位姿都是参照世界坐标系或者由世界坐标系定义的笛卡尔坐标系。 位置描述 一旦建立了坐标系,我们就能用一个3×1的位置矢量对坐标系中的任意点进行定位。因为经常在世界坐标系中还要定义许多坐标系,因此必须在位置矢量上附加一信息,表明是在哪一个坐标系中定义的。 如图中的点 A P用一个矢量表示为: A P = [ p x p y p z ] T ,其中 p x 、p y 和p z 分别为该矢量在X轴、Y轴和Z轴方向上的投影的长度。 姿态描述 单靠位置矢量还不足以准确描述机械手的位置,还要有关于其姿态的描述才能完全确定其位置。为了描述物体的姿态,需在物体上固定一个坐标系,并给出该坐标系相对于参考坐标系的表达。 如图中的坐标系{B}以某种方式固定在机械手上,则{B}相对于参考坐标系{A}的表达可描述该机械手的姿态。 用X B 、Y B 和Z B 表示坐标系{B}主轴方向的单位矢量,它们在参考坐标系{A}上的表达为: A X B 、 A Y B 和 A Z B ,则将这三个单位矢量按顺序组成一个3×3的旋转矩阵,并用 B A R ^A_BR B A