精华内容
下载资源
问答
  • 对微积分(高等数学)向量和空间坐标进行详细的整理,包含“平行和垂直”“矢量运算几何意义”“距离公式”“直线方程”“平面公式”“夹角问题”“投影”“公垂线问题”“曲面方程”【蔡出品】
  • 向量

    2020-08-24 17:10:27
    在二维空间中,坐标是用水平轴(x)和垂直轴(y)来定义的。二维空间中的一个特定位置被写成一对值,如(4,3)。 用这种方法,二维平面上的任何位置都可以用一对数字来识别。但是,我们也可以把位置(4,3)看作是与(0,0)点...

    Godot Vector(向量)

    向量

    在二维空间中,坐标是用水平轴(x)和垂直轴(y)来定义的。二维空间中的一个特定位置被写成一对值,如(4,3)。
    在这里插入图片描述
    用这种方法,二维平面上的任何位置都可以用一对数字来识别。但是,我们也可以把位置(4,3)看作是与(0,0)点或原点的偏移。画一个从原点指向点的箭头:
    在这里插入图片描述
    这是一个向量。向量表示许多有用的信息。除了告诉我们这个点在(4,3),我们也可以把它看作一个角度θ和一个长度(或大小)m。在这种情况下,箭头是一个位置向量——它表示相对于原点的空间位置。

    要考虑向量的一个非常重要的一点是,它们只表示相对的方向和大小。没有向量位置的概念。以下两个向量是相同的:
    在这里插入图片描述
    两个向量都表示一个点在某个起始点的右边4个单位和下面3个单位。无论你在平面的哪个位置画向量,它总是表示一个相对的方向和大小。

    向量的加法

    我们也可以通过在第一个向量的末尾加上第二个向量来直观地看到这一点:
    在这里插入图片描述
    注意,a + b得到的结果与b + a相同

    标量乘法

    向量同时表示方向和大小。只表示大小的值称为标量。

    一个向量可以乘以一个标量:
    在这里插入图片描述
    一个向量乘以一个标量不会改变它的方向,只改变它的大小。这就是向量缩放的方法。

    实际应用

    让我们看看向量加法和减法的两种常见用法:

    移动

    向量可以表示任何具有大小和方向的量。典型的例子有:位置、速度、加速度和力。在这个图像中,第1步的飞船的位置向量是(1,3),速度向量是(2,1)。速度向量表示每一步船移动的距离。我们可以通过将速度添加到当前位置来找到第2步的位置。

    在这里插入图片描述
    速度测量的是单位时间内位置的变化量。通过在原来的位置上加上速度,可以找到新的位置。

    指向目标

    在这个场景中,你有一辆坦克,它希望将炮塔对准一个机器人。机器人的位置减去坦克的位置就得到了从坦克指向机器人的向量。
    在这里插入图片描述
    要找到一个从 a 指向 b 的向量,可以使用 b-a。

    单位向量

    大小为1的向量称为单位向量。它们有时也被称为方向向量或法线。当你需要跟踪一个方向时,单位向量是有用的.

    Normalization

    将一个向量归一化意味着将它的长度减小到1,同时保持它的方向。这是通过每个分量除以它的大小来实现的。因为这是一个非常常见的操作,所以Vector2和Vector3提供了一种归一化的方法:

    a = a.normalized()
    

    因为标准化涉及到除以向量的长度,你不能标准化一个长度为0的向量。尝试这样做会导致错误。

    反射

    单位向量的一个常见用法是表示法线。法向量是垂直于表面的单位向量,定义了它的方向。它们通常用于照明、碰撞和其他涉及表面的操作。
    例如,假设我们有一个移动的球,我们想从墙壁或其他物体上弹回来
    在这里插入图片描述
    法线表面的值是(0,-1)因为这是一个水平面的。当球碰撞时,我们用法线反射它的剩余运动(当它撞击表面时剩余的运动)。在Godot中,Vector2类有一个bounce()方法来处理这个问题。下面是一个使用KinematicBody2D的GDScript示例图:

    # object "collision" contains information about the collision
    var collision = move_and_collide(velocity * delta)
    if collision:
        var reflect = collision.remainder.bounce(collision.normal)
        velocity = velocity.bounce(collision.normal)
        move_and_collide(reflect)
    

    这里先回顾一下三角函数:

    直角三角形三角函数定义

    在直角三角形中,当平面上的三点A、B、C的连线,AB、AC、BC,构成一个直角三角形,其中∠ACB为直角。对∠BAC而言,对边(opposite)a=BC、斜边(hypotenuse)c=AB、邻边(adjacent)b=AC,则存在以下关系:
    在这里插入图片描述
    在这里插入图片描述
    sin∠A=a/c
    cos∠A=b/c
    tan∠A=a/b

    在这里插入图片描述
    我们做函数图像,于是有,正弦函数图:
    在这里插入图片描述
    sin(0)=0,sin(90)=1.

    余弦函数图:
    在这里插入图片描述
    cos(0)=1,cos(90)=0.

    余弦定理

    余弦定理,欧氏平面几何学基本定理。余弦定理是描述三角形中三边长度与一个角的余弦值关系的数学定理,勾股定理是余弦定理的特例。

    公式含义

    对于任意三角形,任何一边的平方等于其他两边平方的和减去这两边与它们夹角的余弦的积的两倍。
    若三边为a,b,c 三角为A( α),B(β ),C( γ),则如下图所示,在△ABC中,
    在这里插入图片描述
    余弦定理表达式1
    在这里插入图片描述
    同理,也可描述为:
    在这里插入图片描述在这里插入图片描述

    勾股定理是余弦定理的特例,当γ 为90°时,cosγ =0 ,余弦定理可简化为 c2=a2+b2c^2=a^2+b^2 ,即勾股定理。
    回到介绍向量。

    点积

    点积是向量数学中最重要的概念之一,但经常被误解。点积是对两个向量的运算,它返回一个标量。与同时包含大小和方向的向量不同,标量值只有大小。

    定义

    点积有两种定义方式:代数方式和几何方式。通过在欧氏空间中引入笛卡尔坐标系,向量之间的点积既可以由向量坐标的代数运算得出,也可以通过引入两个向量的长度和角度等几何概念来求解。我们关注几何定义。

    几何定义

    设二维空间内有两个向量 ab ,|a|和|b| 表示向量ab的大小,它们的夹角为 θ(0 ≤ θ ≥ π),则点积定义为以下实数:
    a·b = |a||b|cosθ
    该定义只对二维和三维空间有效。

    意义

    点积的几何意义包括:

    1. 计算两个向量之间的夹角
    2. 第一个向量投影到第二个向量上(这里,向量的顺序是不重要的,点积运算是可交换的)

    推导

    在这里插入图片描述

    在这里插入图片描述也就是 a·b = |a||b|cosθ

    然而,在大多数情况下,使用内置方法是最容易的。注意,两个向量的顺序无关紧要:

    var c = a.dot(b)
    var d = b.dot(a) # These are equivalent.
    

    点积在单位向量中最有用,可以使 |a||b|cosθ公式简化为cosθ。这意味着我们可以用点积来告诉我们关于两个向量夹角的信息。
    a·b = |1||1|cosθ
    a·b =cosθ
    在这里插入图片描述
    当使用单位向量时,结果总是在-1(180度)和1(0度)之间。

    朝向

    我们可以利用这个事实来检测一个物体是否正对着另一个物体。在下面的图表中,玩家P试图避开僵尸A和b。假设僵尸的视野是180度,他们能看到玩家吗?
    在这里插入图片描述
    绿色箭头fA和fB是单位矢量,代表僵尸面向的方向,蓝色半圆代表僵尸的视野。对于zombie A,我们使用P - A找到指向玩家的方向的向量AP并将其归一化,然而,Godot有一个助手方法来做这个,叫做direction_to。如果这个向量和面对的向量之间的角度小于90度,那么僵尸就可以看到玩家。
    代码:

    if AP.dot(fA) > 0:
        print("A sees P!")
    
    展开全文
  • 其实,齐次坐标系中三点共线,可以等价于求二维欧几里得坐标系中三个向量共面. 第一种方法是利用公式:a⋅(b×c)=0 \mathbf{a} \cdot(\mathbf{b} \times \mathbf{c})=0 a⋅(b×c)=0 三个向量的混合积等于0,就证明它们共...

    其实求齐次坐标系中三点共线,可以等价于求欧几里得坐标系中三个向量共面.
    第一种方法是利用公式:a(b×c)=0 \mathbf{a} \cdot(\mathbf{b} \times \mathbf{c})=0

    三个向量的混合积等于0,就证明它们共面.
    因为两个向量b,c的叉积得到第三个向量d,这个向量b,c所组成的平面垂直,
    如果a与d垂直,也就是a与d的点积等于0,那么a与b,c所组成的平面是平行的,由于向量在空间中可以自由平移,所以a与b,c共面.
    需要用到Opencv,代码如下:

    bool noThreeCollinear(const std::vector<cv::Vec3f> &points){
        int n = points.size();
        int result = 1;
        for (int i = 0; i<n-2;i++){
            for (int j = i+1; j<n-1;j++){
                for (int k = j+1; k<n;k++){
                    result *= points[i].dot(points[j].cross(points[k]));
                }
            }
        }
        if (result == 0)
        {return false;}
        else
        {return true;}
    }
    

    第二种方法是判断这三个向量(齐次坐标系中的点)的行列式是不是为0.
    det[xyz]=0 \operatorname{det}\left[\begin{array}{lll} {\mathbf{x}} & {\mathbf{y}} & {\mathbf{z}} \end{array}\right]=0
    det[xyz]=x1y1z1x2y2z2x3y3z3 \operatorname{det}\left[\begin{array}{lll} {\mathbf{x}} & {\mathbf{y}} & {\mathbf{z}} \end{array}\right]=\left|\begin{array}{lll} {x_{1}} & {y_{1}} & {z_{1}} \\ {x_{2}} & {y_{2}} & {z_{2}} \\ {x_{3}} & {y_{3}} & {z_{3}} \end{array}\right|
    而前面的混合积展开后是这个样子的:
    a(b×c)=a1a2a3b1b2b3c1c2c3 \mathbf{a} \cdot(\mathbf{b} \times \mathbf{c})=\left|\begin{array}{lll} {a_{1}} & {a_{2}} & {a_{3}} \\ {b_{1}} & {b_{2}} & {b_{3}} \\ {c_{1}} & {c_{2}} & {c_{3}} \end{array}\right|
    混合积展开就是行列式的转置.
    由于:det(A)=det(AT) \operatorname{det}(\mathbf{A})=\operatorname{det}\left(\mathbf{A}^{T}\right)
    所以这两种方法本质上是一样的.
    代码如下:

    bool noThreeCollinear(const std::vector<cv::Vec3f> &points){
        int n = points.size();
        int result = 1;
        cv::Matx33f M;
        for (int i = 0; i<n-2;i++){
            for (int j = i+1; j<n-1;j++){
                for (int k = j+1; k<n;k++){
                    M(0,0)= points[i](0);
                    M(1,0)= points[i](1);
                    M(2,0)= points[i](2);
                    M(0,1)= points[j](0);
                    M(1,1)= points[j](1);
                    M(2,1)= points[j](2);
                    M(0,2)= points[k](0);
                    M(1,2)= points[k](1);
                    M(2,2)= points[k](2);
                    result *= cv::determinant(M);
                }
            }
        }
        if (result == 0)
        {return false;}
        else
        {return true;}
    }
    

    这个矩阵赋值我觉得应该有更简单的方法,但是我不会,谁知道可以告诉我一下嘛

    测试函数:

    
    void test_noThreeCollinear()
    {
         std::vector<cv::Vec3f> p1 = {
               {1.0f, 0.0f, 1.0f},
               {2.0f, 0.0f, 1.0f},
               {3.0f, 639.0f, 1.0f},
               {4.0f, 639.0f, 1.0f},
           };
        bool b = noThreeCollinear(p1);
        if (!b){
            cout << "There seems to be a problem with noThreeCollinear(..)!" << endl;
            cout << "Press enter to continue..." << endl;
            cin.get();
            exit(-1);
        }
    }
    

    如果觉得有帮助,欢迎点赞~
    有问题的话欢迎评论里指出错误!我感觉自己都在乱写.
    谢谢~

    展开全文
  • 1.法向量垂直于平面的向量,一个点有两个法向量。图形学只取正方向的法向量。 2.求光向量与法线夹角公式 3.计算法向量:左手坐标系 ...
    • 课时38 图形学入门 - 法向量与光照

    1.法向量:垂直于平面的向量,一个点有两个法向量。图形学只取正方向的法向量。

     

     

    2.求光向量与法线夹角公式

     

    3.计算法向量:左手坐标系

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 向量的内积和外积

    2021-02-06 08:07:43
    目录: 一、向量的内积和几何意义 二、向量的外积和几何意义 一、向量的内积和几何意义(点乘) 对于向量a和向量b: ...1、a和b的内积公式为: ...并且两个向量的叉积与这两个向量组成的坐标平面垂直。 对于向量...

    目录:

    一、向量的内积和几何意义

    二、向量的外积和几何意义

     

    一、向量的内积和几何意义(点乘)

    对于向量a和向量b:

    1、a和b的内积公式为:

     

     

    要求一维向量a和向量b的行列数相同。

    2、内积的几何意义

    点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影。

    二、向量的外积和几何意义(叉乘)

    两个向量的外积,又叫向量积、叉乘等。外积的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。

    对于向量a和向量b:

     

    1、a和b的外积公式为:

     

     

    其中:

     

    根据i、j、k间关系,有:

     


    2、叉乘几何意义

    在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。

    展开全文
  • 三角化公式推导&手撕代码

    千次阅读 2019-05-07 21:07:34
    设空间点PPP在世界坐标系下的坐标为XXX,点PPP到相机中心点的垂直距离为ddd,在像素坐标系下的坐标为xxx,世界坐标系与相机坐标系之间的相对旋转矩阵为RRR(3∗33*33∗3的旋转矩阵)、相对位移向量为TTT(3∗13*13.....
  • 正常求2个向量夹角用内积公式就可以计算,然而求得的结果不包含方向信息。 如果需要方向信息的话需要引入向量的外积来帮助我们判断。 theta是两个向量的夹角,n是垂直与2维平面的方向向量,由右手定则可以判断方向...
  • 无人驾驶frenet坐标系解释

    千次阅读 2020-06-21 21:40:01
    N称为法向量(Normal),表示当前曲线运动平面内垂直于的单位向量;B称为当前运动平面的副法向量(Binormal),表示同时垂直于和的单位向量。令r(t)为这个欧式空间中随着时间t改变的非退化曲线,可令s(t)为这条非...
  • 2.5.15 ATAN2——计算给定坐标的反正切值 101 2.5.16 ACOT——计算数字的反余切值 102 2.5.17 ACOTH——计算数字的反双曲余切值 102 2.5.18 COT——计算给定角度的余切值 103 2.5.19 COTH——计算数字的双曲余...
  • 题目大意: 给定n条首尾相接的线段的长度 第一条从0,0开始,所有线段垂直与x轴向上延伸 给定c次操作 每次操作给定 s,a ...向量逆时针旋转公式为 x' = x * cos(A) - y * sin(A); y' = x * sin(A) + y * cos(...
  • by---cxlove 题目:给出一些移动向量,最终形成一个多边形,求多边形的面积。以为多边形内部的格点数目和多边形边上的格点数目 。 首先面积可以通过叉积的...如果是水平或者垂直,显然可以得到,否则则是坐标差...
  • 1·5 两条直线平行与垂直的条件 1·6 通过两直线交点的直线 1·7 点到直线的距离 1·8 两条直线的交角 2.圆的方程 2·1 圆的方程 2·2 圆与直线 2·3 通过圆与圆或圆与直线交点的圆 3.二次曲线 3·1 抛物线·椭圆·...
  • 1·5 两条直线平行与垂直的条件 1·6 通过两直线交点的直线 1·7 点到直线的距离 1·8 两条直线的交角 2.圆的方程 2·1 圆的方程 2·2 圆与直线 2·3 通过圆与圆或圆与直线交点的圆 3.二次曲线 3·1 抛物线·椭圆·...
  • 叉积学习笔记——例:hrbust-1304

    千次阅读 2018-02-02 23:58:19
    并且两个向量的叉积与这两个向量组成的坐标平面垂直。 对于向量a和向量b: a和b的叉乘公式为: 其中: 根据i、j、k间关系,有:
  • 在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)(地磁的垂直不关心)两个三维向量。机体坐标系:以下简称机体,上面有陀螺、加计、电子罗盘传感器,三个三维向量。换算公式:以下简称公式公式就是...
  • 在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)(地磁的垂直不关心)两个三维向量。 机体坐标系:以下简称机体,上面有陀螺、加计、电子罗盘传感器,三个三维向量。 换算公式:以下简称公式公式就是...
  • 捷连导航

    2019-06-22 11:27:04
    在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)(地磁的垂直不关心)两个三维向量。 机体坐标系:以下简称机体,上面有陀螺、加计、电子罗盘传感器,三个三维向量。 换算公式:以下简称公式公式就是...
  • 捷联惯导算法心得

    千次阅读 2014-03-27 16:56:10
    在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)(地磁的垂直不关心)两个三维向量。 机体坐标系:以下简称机体,上面有陀螺、加计、电子罗盘传感器,三个三维向量。 换算公式:以下简称公式公式...
  • 在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。 在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而...
  • 捷联惯导算法--体会与心得

    千次阅读 2019-06-05 18:48:38
    1、四个概念:“地理”坐标系、“机体”坐标系、他们...在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)(地磁的垂直不关心)两个三维向量。 机体坐标系:以下简称机体,上面有陀螺、加计、电子罗盘...
  • 叉乘(向量积),结果是一个向量,并且和已有两个向量垂直。 1、用向量计算公式对比: 点乘: a · b =|a||b|cosθ 【 |a||b|cos<a, b>】 叉乘:a × b = |a||b|sinθ 【 |a||b|sin<a, b>】 2、...
  • 文章标题

    2015-10-30 09:50:52
    因为感觉写的太好了,所以就转了!详细可以参考原来的帖子:...在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)(地磁的垂直不关心)两个三维向量。 机体坐标系:以下简称机体,上面
  • 2、外积:外积的方向垂直a、b两个向量,大小为 它是两个向量张成的四边形的有向面积。外积只对三维向量存在定义,可以表示旋转^表示反对称符号,外积公式: 3、欧氏变换:同一个向量在各个坐标系下的长度和夹角都...
  • 10250 The Other Two Trees

    2013-09-29 15:28:14
    然后平移中心点坐标到原点,题目告诉的两个点也一样平移,假设移动之后两个点中有一个点的坐标为(a,b),那么所求的点平移之后的坐标就分别为(b,-a)和(-b,a),这个根据两向量垂直其向量内积为零以及向量的长度的公式
  • (u其实就是x)关于第一步的解释: 我们把坐标系中的点都看作是向量坐标系就是你选取的feature),w 是分界线的垂直向量, 根据图上的公式,我们可以求任何一个点 在决策线的垂直方向上的投影。 根据这个投影长度...
  • SVM——大间隔分类器的原理前言向量内积SVM分类器一些解释为什么图片中向量θ和决策边界始终垂直SVM的全部目标函数公式参考资料 前言 在下图的分类中,线性分类器的决策边界可能是绿色或粉色的直线,但支持向量机...
  • 感知机的几个细节

    2021-01-27 10:19:42
    设x1为超平面上一点,b'为坐标原点在超平面上沿着法向量方向的投影,那么向量(x1-b')表示为向量x1b'。 又因为法向量和超平面垂直,所以位于超平面上的任意两点构成的向量和法向量点乘都为0,所以: x1b'dotw=0,即...
  • Shader中法线纹理总结

    2020-09-30 13:24:27
    一、为什么看到的法线贴图都是偏蓝色?...那么法线坐标就为[0,0,1],而向量坐标映射范围为[-1,1],但是纹理坐标映射范围为[0,1],这样法线向量映射到纹理坐标就是 [0.5,0.5,1] 根据公式 (n.xyz+1)/2,=[...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

向量垂直公式坐标公式