zoukankan      html  css  js  c++  java
  • [3D数学]向量

    <1>向量与标量:

                              向量:有方向有长度(非负,比如(1,0,0) 方向指向X+,长度为1。normalize向量规范化,向量方向不变,但是长度为1,计算向量夹角一般规范化向量,求出cosa的值,acos反余弦求夹角)

                             标量:只有长度(强调的是数值)

    <2>向量的维度:

                               2维(0,1)  3维(0,0,1)  4维(0,1,1,0)  4维在CG语言中:比如color就有4个维度rgba  _Time也有四个维度;值得注意的是:2维用x,y表示 3维用x,y,z表示 4维用x,y,z,w表示 在CG语言中4维也可以用r,g,b,a表示

    <3>位置与位移:

                                位置:很好理解是一个position,是一个坐标点

                                位移:比如我向前位移3步,我的位置发生了改变,但是这个位移却不是位置,它是由大小(3步)和方向(向前)构成,所以它能用向量表示

                                速度与速率:是一个向量吗?我行走的速度是10KM,明显是一个数值(速率);速度是10KM向北走,它可以用向量表示(速度);

    <4>向量与位置:

                                现在有点(x,y) 有向量(x,y) 看似两个很相似,但是却不一样:向量[x,y]描述了远点到点(x,y)的位移量

                                任何一点都能用从远点开始的向量来表达

    <5>线性代数:

                               数学中专门研究向量的分支称作线性代数

                              1. 零向量: 表示"没有位移" 

    <6>向量的运算:

                               1.向量的模长(长度、大小):|v| = sqrt(v1^2+v2^2+v3^2+...vn^2)  所有分量的平方相加  再开平方   (其实就是三角形的斜边啦 勾股定律可以求斜边长度,三维向量更复杂)

                               2.向量*标量: 向量的分量分别*标量k=2   v=(x,y,z) * 2 = (2x,2y,2z);意义:向量*标量使得向量的长度增加了k倍,如果标量k<0 则向量方向相反

                               3.标准化向量:单位长度为1的向量,称为标准向量;在unity中向量m.normalize即可以规范化向量m;在CG语言中normalize(m)规范化向量m ;如何求向量的规范化向量:分量 / 向量模长

                               4.向量的加减:加法:对应分量的加减啦;几何解释:向量a,b的相加解释为:平移向量,使向量a的头连接向量b的尾,接着从a的尾向b的头画一个向量,得到的就是a+b,这就是向量假发的"三角形法则"

                                                                      向量解释为位移序列:[1,-3,-4]分解为:向右1个单位,向下3个单位,向前4个单位(这一概念将用在坐标系间转换向量)

                                                          减法:求点a到点b的向量 m = b-a;m = (b1-a1,b2-a2,b3-a3) = (x,y,z);那么问题来了:在unity中求a点到b点的距离我们是怎么求得的?

                                                                      dis = Vector3.Distance(a,b) 或者 dis = (a-b).magnitude 内部其实就是求出了两点的向量,再求向量的模长

                               5.向量的点乘(内积):Dot(a,b) 就是对应分量相乘再相加 a1*b1+a2*b2+..an*bn   或者 |a| * |b| *cos&    (1,1)*(-1,1) = 1*-1 + 1*1 = 0   或者 |(1,1)| * |(-1,1)| * cos90 = 1*1*0 = 0 

                                                                     向量点乘的结果是一个数值

                              6.向量的叉乘:Cross(a,b)如图:得到的值为以一个向量:垂直于a,b向量平面的法向量,这个法向量的长度与a,b夹角sin&有关;aXb的长度 = |a| * |b| * sin&

                                                       

                              

                

  • 相关阅读:
    函数功能
    Vue + Element UI 实现权限管理系统 前端篇(十六):系统备份还原
    Vue + Element UI 实现权限管理系统 前端篇(四):优化登录流程
    Vue + Element UI 实现权限管理系统 前端篇(五):国际化实现
    Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境
    Vue + Element UI 实现权限管理系统 前端篇(三):工具模块封装
    Vue + Element UI 实现权限管理系统 前端篇(二):Vue + Element 案例
    小程序 web-view
    ffmpeg 给图片添加水印
    给右键菜单添加 cmd
  • 原文地址:https://www.cnblogs.com/cocotang/p/7345296.html
Copyright © 2011-2022 走看看