Unity3D】请问向量的点乘、叉乘以及归一化有什么意义呢?

2020-06-03 15:43发布

5条回答
男孩无衣
1楼 · 2020-06-03 15:52.采纳回答

1)点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影,通常用做判断前后

2)叉乘得到的向量垂直于原来的两个向量,通常用在判断左右

3)标准化向量:用在只关系方向,不关心大小的时候。通常用在表示某个方向,不会考虑模长。


蜗牛
2楼 · 2020-06-04 10:01

一楼回答的十分专业,建议采纳

老杜
3楼 · 2020-06-04 14:54

点乘求的是两个向量的夹角,比如游戏里判断玩家是在npc的前面还是后面

叉乘求的是两个向量的垂直向量,比如光照运算时求法线向量

Ross
4楼 · 2020-06-04 16:41

归一化

  • 向量a

  • |a|为a的模长 |a| = (向量a各分量二次幂相加结果)的开方

  • 向量a的归一化记为a^ ,归一化后的a^又称向量a的 单位矢量

  • 公式:a^ = a  / |a|

  • 归一化的意义:将向量a等比例缩放为单位矢量,在计算时我们无需考虑具体的模长所带来的影响,只考虑向量的方向,可以理解为物理学中的功,后续在点乘中,我们还会提到

点乘

  • 向量a,向量b,θ为向量ab夹角

  • 数学公式:a · b = |a| * |b| * cosθ

  • 点乘的意义:根据点乘公式和余弦可以推导,点乘的值为正负代表着两向量之间的夹角大小,也可以通过点乘值逆推两向量夹角,点乘结果代表两向量的一致性,归一化两向量的点乘值越接近于1,两向量的方向一致性越高

叉乘

  • 向量a,向量b,θ为向量ab夹角

  • 数学公式 axb = |a| * |b| * sinθ

  • 叉乘的意义:向量叉乘的结果为垂直于两向量组成平面的向量,可以根据顶点信息求取顶点法线,得到的结果为符合右手坐标系的向量




链接:https://www.jianshu.com/p/bc03c98cf043


慢半拍
5楼 · 2021-09-28 13:53

1.点乘

定义
点乘又称点积、数量积、标量积。
从几何角度看,点乘是两个向量的长度和它们的夹角余玄值的积。
Unity游戏开发——向量运算(点乘和叉乘)
从名称和定义来看,点乘的结果是标量。点乘的名称也源自与点乘的运算符号。
Unity游戏开发——向量运算(点乘和叉乘)
通过上面的公式,我们也可以得到如下公式。
Unity游戏开发——向量运算(点乘和叉乘)
也就是说如果给定了两个向量,那么我们就可以求出两个向量的夹角。

2叉乘

定义

又称叉积、向量积

首先叉乘的结果是向量不是标量。

叉乘的名称也来源于符号
Unity游戏开发——向量运算(点乘和叉乘)
叉乘的公式定义稍微复杂一点
Unity游戏开发——向量运算(点乘和叉乘)
叉乘最后的结果是一个向量,大小可以根据公式算出,但是方向要根据右手法则确定。
Unity游戏开发——向量运算(点乘和叉乘)
实际上Unity中用的是左手坐标系,所以确定方向的时候我们要用左手法则,最后得到的方向正好与右手法则相反。所以两个向量的叉乘并不是一个真向量,它受参照系的影响,这个在以后的计算中要注意我们使用的到底是哪种坐标系。


相关问题推荐

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • unity如何自学Unity3D 2022-01-06 15:24
    回答 18

    可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 2

    Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...

  • 回答 4

    文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...

  • 回答 7

    策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样!    游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...

  • 回答 7
    已采纳

    可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。

  • 回答 3
    已采纳

    游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...

  • 回答 5

    void Update(){          transform.rotation = Quaternion.Euler(Vector3.zero);}可以试一下,保证物体x轴和z轴为0就可以使其一直垂直。

  • 回答 3

    界面左右移动、上下移动。。本质都是:手指滑动。。。可以参考这些:https://www.cnblogs.com/coldcode/p/5362537.htmlhttps://blog.csdn.net/totosj/article/details/80112852https://blog.csdn.net/zcc858079762/article/details/85253120...

  • 回答 6

    首先新建一个C#脚本,命名为MyFollow,然后把以下代码粘贴进去,保存:AخA 1using UnityEngine;2using System.Collections;3public class MyFollow : MonoBehaviour4{5    public float distanceAway = 5;          // distance...

  • 回答 5

    安装高通的Vuforia插件即可。

  • 回答 5

    不可以,只能一个工程打一个包。

  • 回答 2

    Edit->Project Settings->Graphics 找到Shader Stripping 中fog mode设置为custom(原来是Automatic),然后选中你想要的模式,最后重新打包就ok

  • 回答 2

    用到的插件:System.Drawing.dllSystem.Windows.Forms.dllSystem.Deployment.dll(运用基于.Net4.x的dll打包时,需要用到该dll,否则会报错)代码如下:using System;using System.Runtime.InteropServices;using UnityEngine;using UnityEngine.UI; p......

  • 回答 6

    如下图,设置为none,然后删掉滑动条就可以了。

没有解决我的问题,去提问