赞
踩
如果我们手中 只有解决具体问题的工具,没有统一的方法论,那我们也无法一劳永逸地解决问题的根本。
不管我 们用什么绘图系统绘制图形,一般的几何图形都是由点、线段和面构成。其中,点和线段 是基础的图元信息,因此,如何描述它们是绘图的关键。因此,我们要建立一套与各个图形系统无关联的、简单的基于向量和矩阵运算的数学体 系,用它来描述所有的几何图形信息。
如何用向量来描述点和线段? 一个向量包含有长度和方向信息
在可视化的许多应用场景中,我们都 要处理成百上千的图形。如果这个时候,我们在原始坐标下通过计算顶点来绘制图形,计 算量会非常大,很麻烦。那采用坐标变换的方式就是一个很好的优化思路,它能够简化计 算量,这不仅让代码更容易理解,也可以节省 CPU 运算的时间。
Math.atan2() 返回从原点(0,0)到(x,y)点的线段与x轴正方向之间的平面角度(弧度值),也就是Math.atan2(y,x)。Math.atan2 的取值范围是 -π到π,负数表示在 x 轴下方,正数表示在 x 轴上方。
Math.atan2(90, 15) // 1.4056476493802699
Math.atan2(15, 90) // 0.16514867741462683
Math.atan2( ±0, -0 ) // ±PI.
Math.atan2( ±0, +0 ) // ±0.
Math.atan2( ±0, -x ) // ±PI for x > 0.
Math.atan2( ±0, x ) // ±0 for x > 0.
Math.atan2( -y, ±0 ) // -PI/2 for y > 0.
Math.atan2( y, ±0 ) // PI/2 for y > 0.
Math.atan2( ±y, -Infinity ) // ±PI for finite y > 0.
Math.atan2( ±y, +Infinity ) // ±0 for finite y > 0.
Math.atan2( ±Infinity, x ) // ±PI/2 for finite x.
Math.atan2( ±Infinity, -Infinity ) // ±3*PI/4.
Math.atan2( ±Infinity, +Infinity ) // ±PI/4.
Math.hypot() 函数返回所有参数的平方和的平方根。
点乘几何意义
点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影
,有公式:
推导过程如下,首先看一下向量组成:
定义向量:
根据三角形余弦定理有:
根据关系c=a-b(a、b、c均为向量)有:
即:
向量a,b的长度都是可以计算的已知量,从而有a和b间的夹角θ:
注意:上面公式应该是反余弦函数,即arccos().
根据这个公式就可以计算向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:
两个向量的叉乘的运算结果是一个向量而不是一个标量,并且两个向量的叉积与这两个向量组成的坐标平面垂直。
对于向量a和向量b:
a和b的叉乘公式为:
其中:
根据i、j、k间关系,有:
叉乘几何意义
叉乘的公式:
在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系
。如下图所示:为什么要有参数方程和参数方程的定义
参数方程意义:
参数方程主要用来描述曲线轨迹,一般来讲,引入一个参数会较容易的表示出曲线每个坐标之间的关系,通常来讲,时间和角度用的比较多。总之,你引入一个中间量,会使得问题简化或更容易理解!比如摆线的描述,直接求解y和x的关系,相信你一头雾水,但是引入适当参数后,so easy!
参考:https://www.zhihu.com/question/29032945
基础的线条是可以通过div+css来实现,但是如果是曲线,div+css可能就实现不了了,需要借助svg或canvas来实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。