精华内容
下载资源
问答
  • av28779788?p=?视频学习笔记 当前为-->第四部分:3D数学 向量 ...向量的模 ...求模,在unity中随便添加1个物体,再将下例脚本拖拽其上,运行结果如图: ...如上,白线为模长--注:为方便,本章代码中摄像机均位于...向量相减...

    av28779788?p=?视频学习笔记

    • 当前为-->第四部分:3D数学

    向量

    向量的模

    求模,在unity中随便添加1个物体,再将下例脚本拖拽其上,运行结果如图:

    如上,白线为模长--注:为方便,本章代码中摄像机均位于世界坐标原点(0,0,0)

    向量的方向

    如上,红线为单位向量-向量方向-归一化向量.

    向量运算(1)

    向量相减

    为了便于观察理解,以下2个物体Y坐标皆是0,运行后感觉结果怪怪的,改成ISO正交模式后观察就容易理解了:



    如上,红线为T1-T2;黄线为T2-T1.以下为草图辅助理解.虚线为我们理解的T2-T1但实际并不存在.因为所有向量起点必须是世界坐标原点0,0,0.

    .

    修改1下代码,再拖放1个物体T3到场景中,将T3和T2放一起.然后t3也挂在脚本上.下例代码按空格键t3(相当于子弹)会向t1移动:




    向量相加

    向量乘除标量

    三角函数





    如上,白线会随物体运动而变化(永远指向物体自身坐标的(0,0,10)).
    不管物体如何运动,红线的终点始终在世界坐标(0,0,10).
    -------------------------------------------------------------------

    练习:计算物体右前方30度,10米远的坐标(如图是横X轴,竖Z轴,Y轴忽略不计)


    如下,白线终点即为所求坐标点.

    向量运算(2)

    点乘

    注意:根据点乘结果计算夹角范围为0-180度.

    结果如下图:


    假如我们在代码中添加判断夹角是否大于60度的逻辑,以下两种写法都可以.其中第二种方法可以避免做一次arccos运算.

    当然,也可以用查表法.即在程序开始之时把各个角度的正弦余弦等提前算好存入数组中.这样在游戏中需要时不必计算(因为计算通常都是在Update中频繁运算,比较浪费计算机资源)直接读取数组相应元素即可.相当于把正弦表余弦表存入计算机,需要时读取:

    叉乘


    结合点乘与叉乘获取两向量夹角,取值范围0-360度:

    注意:结合点乘与叉乘,可判断夹角在0-360度(单独用叉乘获得的夹角在0-90度,一般不用)

    练习:敌人对玩家发动攻击的逻辑

    展开全文
  • 向量

    2017-09-12 22:30:00
    相减(向量之差),向量相应坐标相减产生的新向量向量之差,由减数指向被减数。 标量乘法(scalar),向量的各坐标乘以相应的标量(scalar)后产生的新向量,方向不变。 长度(magnitude),各坐标平方后求和再开...

    向量的基本运算:

    1. 相加(向量之和),向量相应坐标相加产生的新的向量为向量之和。
    2. 相减(向量之差),向量相应坐标相减产生的新向量为向量之差,由减数指向被减数。
    3. 标量乘法(scalar),向量的各坐标乘以相应的标量(scalar)后产生的新向量,方向不变。
    4. 长度(magnitude),各坐标平方后求和再开平方所得的值即为向量的长度。
    5. 方向(direction),可以被同一方向上的单位向量表示,寻找单位向量的过程称为标准化。
    6. 点积(dot product),两个向量相对应坐标的乘积和,为一个数值。
    7. 平行向量,一个向量可以由另一个向量进行标量乘法得到,则互为平行向量。
    8. 正交向量,两个向量的点积为0则互为正交向量。

    转载于:https://www.cnblogs.com/zhixingzhong/p/7512565.html

    展开全文
  • 向量的计算(减法)

    千次阅读 2019-07-31 15:37:42
    减法:等于各分量相减 ...在Unity中 两个向量相减 后的向量的起始坐标和a,b的起点相同(如下图) 使用 ti-t2后得到的向量是这样的(如下图) 应用:计算两点之间的距离和相对方向 代码表示: ...

    减法:等于各分量相减

    公式:[x1,y1,z1]-[x2,y2,z2]=[x1-x2,y1-y2,z1-z2]

    几何意义:向量a,向量b相减,理解为以b的终点为始点,以a的终点为终点的向量,方向由b指向a (指向被减数)

    在Unity中 两个向量相减 后的向量的起始坐标和a,b的起点相同(如下图)

    在这里插入图片描述使用 ti-t2后得到的向量是这样的(如下图)
    在这里插入图片描述
    在这里插入图片描述

    应用:计算两点之间的距离和相对方向

    代码表示:

    
     //相减
        void Demo03()
        {
            Vector3 dir = t1.position - t2.position;
            //方向:指向被减向量(t1)
            //大小:两点间距
            //注意:实际位置要平移到坐标原点(这里 t1,t2都是世界坐标)
            //t3沿着dir方向移动 dir.normalized:获取方向,不受大小的影响
            t3.Translate(dir.normalized);
            Debug.DrawLine(Vector3.zero,dir);
        }
    

    实际情况:在这里插入图片描述

    展开全文
  • Unity 3D 数学之向量

    2019-10-16 12:58:10
    进入Vector3类,operator定义这个数据类型(Vector3)都能使用哪些运算符 什么是向量 ...向量相减 即结果为: 代码:移动物体从所在的位置沿着计算出的方向移动 向量相加 58与59行等价 ...

    进入Vector3类,operator定义这个数据类型(Vector3)都能使用哪些运算符

    什么是向量

    计算向量模长的三种方法 

    this.transform.position是世界坐标,vector.zero是世界原点

    获取向量的方向

    向量相减

    即结果为:

    代码:移动物体从所在的位置沿着计算出的方向移动

    向量相加

    58与59行等价 

    总结:平行四边形里面可以表示向量相加相减的含义 

    向量与标量的乘除

    向量点乘

     

     

     

    向量叉乘

    向量叉乘的应用

    向量的点乘(两向量夹角)与叉乘(夹角方位(左右))

     

    下面是相关代码:

    using UnityEngine;
    using System.Collections;
    
    /// <summary>
    /// 向量
    /// </summary>
    public class VectorDemo : MonoBehaviour
    {
        public Transform t1, t2,t3;
    
        private void Update()
        {
            Demo08();
        }
    
        //计算向量长度
        private void Demo01()
        {
            Vector3 pos = transform.position;
            float m1 = Mathf.Sqrt(Mathf.Pow(pos.x, 2) + Mathf.Pow(pos.y, 2) + Mathf.Pow(pos.z, 2));
            float m2 = pos.magnitude;
            print(m1 + "----" + m2);
        }
    
        //计算向量方向
        private void Demo02()
        {
            Vector3 pos = transform.position;
    
            Vector3 n1 = pos / pos.magnitude;
            Vector3 n2 = pos.normalized;
    
            Debug.DrawLine(Vector3.zero, n1, Color.red);
        }
    
        //向量基本运算
        private void Demo03()
        {
            Vector3 result = t1.position - t2.position;
            //需求:t3 沿着 result 方向移动
            if (Input.GetMouseButtonDown(0))
                //t3.Translate(result.normalized);
                t3.position = t3.position + result.normalized;
    
            Debug.DrawLine(Vector3.zero, t1.position);
            Debug.DrawLine(Vector3.zero, t2.position);
            Debug.DrawLine(Vector3.zero, result, Color.red);
    
            //已知向量a  长度为8.3m
            //计算该方向 长度为1.5m的向量
            //解决方案:将a向量标准化, 再乘以1.5
    
        }
    
        //弧度与角度
        private void Demo04()
        { 
            // f1角度=>f2 弧度: 弧度=角度数*PI/180   
            float f1 = 50;
            float f2 = f1 * Mathf.PI / 180;
            float f3 = f1 * Mathf.Deg2Rad;
            // Mathf.Rad2Deg  弧度  --->  角度 
        }
    
        //三角函数
        private void Demo05()
        {
            /*
                 sin x = a  /  c
                 a = c *  sin x;
                 c =  a / sin x; 
             */ 
             //已知:角度x  边长 a
             //计算:边长 c
            float x = 50;
            float a = 10;
            float c = a / Mathf.Sin(x * Mathf.Deg2Rad);
    
            //已知:边长 a  c
            //计算:角度angle
            float angle = Mathf.Asin(a / c) * Mathf.Rad2Deg;
    
            print(angle);
        }
    
        //自身坐标  -->  世界坐标
        private void Demo06()
        { 
            Vector3 worldPos = transform.TransformPoint(1, 0, 0); 
            Debug.DrawLine(this.transform.position, worldPos);  
    
            //transform.forward   
            //transform.up
            //transform.right
        }
    
        //练习
        private void Demo07()
        { 
            //计算:前右方30度  10米处世界坐标 
            Vector3 localPos =  new Vector3
                                            (
                                                10 * Mathf.Sin(30 * Mathf.Deg2Rad), 
                                                0, 
                                                10 * Mathf.Cos(30 * Mathf.Deg2Rad)
                                            );
            Vector3 worldPos = transform.TransformPoint(localPos);
    
            Debug.DrawLine(transform.position, worldPos);
        }
    
        public float angle;
        //向量     向量
        private void Demo08()
        {
            //向量   + - 向量
            //向量   *  / 数
            //向量   (点乘)  (叉乘)    向量
            //
    
            //参与点乘运算的向量标准化后,结果为夹角的 cos 值
            float dot = Vector3.Dot(t1.position.normalized, t2.position.normalized);
            angle = Mathf.Acos(dot) * Mathf.Rad2Deg;
    
            //if (angle > 30)//比较角度
            if (dot < 0.866f)//比较cos值
            {
                //如果夹角大于30度则
            }
    
            Vector3 cross = Vector3.Cross(t1.position, t2.position);
            if (cross.y <0)
            {
                angle = 360 - angle;
            }
    
            Debug.DrawLine(Vector3.zero, cross, Color.red);
            Debug.DrawLine(Vector3.zero, t1.position);
            Debug.DrawLine(Vector3.zero, t2.position); 
    
    
    
        }
    }
    

     

    展开全文
  • cc.Node.坐标空间

    2017-11-07 22:26:00
    cc.vec2二维向量坐标,表结构(x:120,y:120); cc.v2(x,y)创建一个二维向量 方法: cc.pSub向量相减 cc.pAdd向量相加 cc.pLength向量长度 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 o...
  • 1.把pi和周围点pj的坐标相减:本质上这生成了许多从pi->pj的向量,理想情况下pi的法线应该是垂直于这些向量的 2.利用奇异值分解求这些向量的0空间,拟合出一个尽可能垂直的向量,作为法线的估计 方法2.基于齐次...
  • Cocos Creator 坐标空间转换

    千次阅读 2019-06-18 14:51:59
    1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二维向量(这个2.0被废弃了,用cc.v2替代) 2: cc.pSub: 向量相减 cc.pSub(v1, v2) 被废弃,用v1.sub(v2)替代 3:...
  • cc.Node—坐标系统

    2018-09-29 17:09:00
    cc.Vec21: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量;2: cc.pSub: 向量相减;3: cc.pAdd: 向量相加;4: cc.pLength: 向量长度; cc.Size/cc.Rect1: cc....
  • cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量 cc.pSub: 向量相减 cc.pAdd: 向量相加; cc.pLength: 向量长度; //坐标位置3种方法--1 var w_pos = new...
  • cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 (v2a对象).sub(v2b对象): a-b向量相减 cc.mag(): 向量长度; 链接: vec2官方API. cc.Size: 包含宽度和高度信息的对象 {width: 100, ...
  • 4.cc.Node(三)坐标空间

    2019-04-02 23:13:49
    cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量 cc.pSub: 向量相减 cc.pAdd: 向量相加; cc.pLength: 向量长度; 2. cc.Size/cc.Rect cc.Size: 包含宽度和...
  • 1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量 2: cc.pSub: 向量相减 3: cc.pAdd: 向量相加; 4: cc.pLength: 向量长度 cc.Size/cc.Rect 1: cc.Size: ...
  • 1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二维向量(这个2.0被废弃了,用cc.v2替代) 2: cc.pSub: 向量相减 cc.pSub(v1, v2) 被废弃,用v1.sub(v2)替代 3:...
  • 1: cc.Vec2 二维向量坐标, 表结构{x: 120, y: 120}; cc.v2(x, y) 创建一个二维向量 cc.p() 创建一个二外向量 2: cc.pSub: 向量相减 3: cc.pAdd: 向量相加; 4: cc.pLength: 向量长度; cc.Size/cc.Rect 1: cc....
  • 通过加减向量的x、y坐标来实现向量的相加或相减。一个向量和自己相加可以使它的长度扩大两倍,一个向量减掉它自己会得到零向量。  如:1.给飞行的皮球加一个重力向量,让它真实地下落  2.把两个碰撞物体的向量加...
  • 这个比较简单,直接使用目标点各个坐标分量相减,然后利用勾股定理求取长度即可。math.sqrt(x*x+y*y+z*z); 2.求两向量夹角 求向量夹角,则需要使用到向量点乘方式。假设有两个向量a,b, a和b的点乘可视为a的模...
  • 大致流程就是当鼠标按下的时候,记录下程序的当前坐标,当鼠标移动时,将最新的鼠标坐标与原始记录坐标相减,得到x轴和y轴的移动向量。完了将窗口进行移动,当鼠标松开是,同理,将最后的鼠标坐标与记录值相减,得到...
  • 向量(又称适量)是游戏开发中非常... (1)加减法:向量的加法(减法)为各个分量的相加(相减)。 a(2,2,3)+b(1,1,1) = c(2+1,2+1,3+1); a(2,2,3)-b(1,1,1) = c(2-1,2-1,3-1); 作用:改变物体的坐标。 ...
  • 每组有四个实数x1,y1,x2,y2分别表示两个点的坐标,这些实数的范围是[-10000,10000]。 输出:对于每组输入,输出夹角的大小精确到小数点后两位。 分析:利用反余弦函数,两点分别与原点连线的夹角可以利用向量积来求...
  • 坐标旋转与平移

    千次阅读 2014-01-21 17:49:40
    一、问题 已知原坐标系下的两个点坐标为p1(x1, y1), p2(x2, y2), 经过平移和旋转对应到新坐标系下的点坐标分别为(0, 0), (x, y),...鉴于本问题的特殊性:新坐标系下其中一点的坐标为(0,0),平移向量则可直接相减
  • 空间向量的运算向量模长的坐标表示式向量方向余弦的坐标表达式数量积(点积、内积)其中为与的夹角.数量积的坐标表达式为两向量夹角余弦的坐标表达式为向量积(叉积、外积)其中为与的夹角.的方向既垂直于,又垂直于,指向...
  • 大家应该都知道坐标系分为四个象限(Quadrant) 其实这是一种很简单矩形距离算法,大概分为以下几个步骤: 1. 以其中一个矩形的的左下点为原点做一个2维坐标系,判断另外一个矩形的左下... 通过判断的相减后的向量来...
  • 发射方向:我们先通过Input.mousePosition方法获得鼠标点击的...再将转换得到的结果和人物本身的世界坐标相减,得到的向量的方向向量便是子弹的发射方向。 子弹自身的角度:我们将发射方向得到的结果使用Vector.A...
  • pcl ISS算法解析

    千次阅读 2019-03-16 10:10:31
    ISS算法的全程是Intrinsic Shape ...把pi和周围点pj的坐标相减:本质上这生成了许多从pi-&gt;pj的向量,理想情况下pi的法线应该是垂直于这些向量的  2.利用奇异值分解求这些向量的0空间,拟合出一个尽可能...
  • 这里讲的是 Quaternion ...非常简单,就是目标坐标和人物坐标相减(数学里面的向量) 我们这里的目标是 cube 所以要取得 cube 的坐标,然后减去人物坐标即可 在脚本中创建一个 位置变量,然后到 Inspector 中把 场景中.
  • 如何计算两点之间的距离

    千次阅读 2017-08-20 15:04:59
    在学习过程中一直都在迷惑,两点之间的距离到底是怎么计算的,如果只是使用两点之间的坐标相减,只能的到一个向量,然后计算向量的模? 经过查找一直没有查到如何计算向量的模,unity中计算平方和开方是十分费资源的...
  • 碰撞检测相关

    2020-02-08 11:09:18
    1,两点坐标相减,得到连接两点的向量 2,求一点旋转后新的坐标: 3,两个向量点乘,得到一个在另一个上投影长度 4,圆形和不旋转矩形检测: 找矩形边上离圆心最近的一点,求该点和圆心距离,小于圆半径则碰撞 5,...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

向量坐标相减