当前位置: 首页 > news >正文

大连制作网站软件自然资源网站建设方案

大连制作网站软件,自然资源网站建设方案,中医网站源码,51简历模板网1. 数学分析 1) 基本定义#xff1a; 向量由多个分量组成#xff0c;2D/3D向量表示一条有向线段。下面的ux,uy就是两个分量。 向量u ux, uy#xff0c;如果从点P1(x1, y1)指向点P2(x2, y2)#xff0c;则#xff1a; U p2 - p1 (x2-x1, y2-y1) Ux, Uy …1. 数学分析 1) 基本定义 向量由多个分量组成2D/3D向量表示一条有向线段。下面的ux,uy就是两个分量。 向量u ux, uy如果从点P1(x1, y1)指向点P2(x2, y2)则 U p2 - p1 (x2-x1, y2-y1) Ux, Uy 向量被定义后总是相对于原点的所以可以用一个点来表示从原点指向该点的向量。 2) 向量的范数(norm) 范数就是向量长度是从原点到终点的距离。用|u|表示所以 |U| sqrt(Ux2 Uy2) |U| sqrt(Ux2 Uy2 Uz2) 3) 单位向量与归一化 有时候我们只关心向量的方向而不关心其长度所以可以对向量做归一化使其方向不变而长度缩放为1以方便计算。用n表示。 归一化公式 n n / |n| 4) 标量与向量乘法 对于标量k标量与向量相乘的公式为 k * u k * ux, uy k * ux, k * uy 标量与向量乘法的几何意义缩放一个向量。也可以乘以-1来反转向量。 5) 向量之间相加将各分量相加即可。 u v ux, uy vx, vy ux vx, uy vy 向量相加的几何意义平移v的起点至u的终点则结果为u的起点到平移后的v的终点的线段。如下图 6) 向量相减分量相减 u - v ux, uy - vx, vy ux - vx, uy - vy 几何意义减数向量的终点指向被减数向量的终点的线段如下图 7) 点积 由于两个向量的分量直接相乘没有什么实际的几何意义所以一般没用。而点积就十分有用。定义如下 u.v ux*vx uy*vy 点积运算是将两个向量的分量分别相乘然后再相加所得的结果是一个标量。 点积的几何意义体现在这个点积公式上 u.v |u| * |v| * cos(theta) 即点积等于两个向量的长度积再乘以它们之间的夹角的余弦。于是便可以推得夹角的计算方法 theta arccos(u.v / (|u| * |v|)) 这个公式是很多3D图形学算法的基础并且如果u和v都是单位向量的话则|u| |v| 1那么 theta arccos(u.v) 下面有4个点积非常重要的定理 1. 如果u与v垂直则u.v 0 2. 如果夹角为锐角则u.v 0 3. 如果夹角为钝角则u.v 0 4. 如果u与v相等则u.v |u| |v| 那么根据点积的这些性质我们可以发现由点积带来的一大用途——计算向量在给定方向上的投影向量。 先看下图 其实思路很简单既然是求u在v分量上的投影向量那么方向已经可以知道了所以所求投影向量的单位向量就等于v的单位向量所以已经可以求得了该投影向量的单位向量p(单位) v / |v| 现在就差长度了通过上图可以知道|p| |u| * cos(theta)综合一下就可以求得 p (v / |v|) * (|u| * cos(theta)) 还记得点积公式吗 u.v |u| * |v| * cos(theta) 所以可以简化上面咱们的推导得 p (u.v * v) / (|v| * |v|) 另外点积满足以下乘法定律很好证明这里省略 u.v v.u u.(vw) (u.v u.w) k*(u.v) (k*u).v u.(k*v) 8) 叉积 首先给出叉积的定义 u × v |u| * |v| * sin(theta) * n 其中n是垂直于u和v的单位法向量。 如何求n呢我们需要建立一个矩阵 |  i    j    k  | | ux uy uz | | vx vy vz  | 其中i,j,k分别是与X、Y、Z轴平行的单位向量。 n是三个标量乘以X、Y、Z轴单位向量的线性组合 n (uy*vz - vy*uz)*i - (ux*vz - vx*uz)*j (ux*vy - vx*uy)*k 所以n uy*vz - vy*uz, -ux*vz vx*uz, ux*vy - vx*uy 这样求得的n不一定是单位向量所以需要进行归一化再使用。 其实后面求n不叉积的定义更重要因为如果要求角度点积就可以直接计算出来了所以一般用叉积都是来求法线向量的。 叉积的乘法定律 u×v -(v×u) u×(vw) u×v u×w (uv)×w u×w v×w k*(u×v) (k*u)×v u×(k*v) 9) 位移向量 先看图 p1是从原点到点P1的向量Vd是从点P1到点P2的向量v是Vd的单位向量p是从原点到P2的向量。 还记得向量加法么我们引入一个参数t来表示所相加的比例则 p p1 t*v 其中t的取值范围是[0, |vd|] 或者 p p1 t*vd 其中t的取值范围是[0, 1] 这个概念非常重要因为在游戏中跟踪直线、线段、曲线时非常有用。 2. 代码实现 void _CPPYIN_Math::VectorAdd(VECTOR2D_PTR va, VECTOR2D_PTR vb, VECTOR2D_PTR vsum) {vsum-x va-x vb-x;vsum-y va-y vb-y; }void _CPPYIN_Math::VectorAdd(VECTOR3D_PTR va, VECTOR3D_PTR vb, VECTOR3D_PTR vsum) {vsum-x va-x vb-x;vsum-y va-y vb-y;vsum-z va-z vb-z; }void _CPPYIN_Math::VectorAdd(VECTOR4D_PTR va, VECTOR4D_PTR vb, VECTOR4D_PTR vsum) {vsum-x va-x vb-x;vsum-y va-y vb-y;vsum-z va-z vb-z;vsum-w 1; }void _CPPYIN_Math::VectorSub(VECTOR2D_PTR va, VECTOR2D_PTR vb, VECTOR2D_PTR vsum) {vsum-x va-x - vb-x;vsum-y va-y - vb-y; }void _CPPYIN_Math::VectorSub(VECTOR3D_PTR va, VECTOR3D_PTR vb, VECTOR3D_PTR vsum) {vsum-x va-x - vb-x;vsum-y va-y - vb-y;vsum-z va-z - vb-z; }void _CPPYIN_Math::VectorSub(VECTOR4D_PTR va, VECTOR4D_PTR vb, VECTOR4D_PTR vsum) {vsum-x va-x - vb-x;vsum-y va-y - vb-y;vsum-z va-z - vb-z;vsum-w 1; }void _CPPYIN_Math::VectorScale(double k, VECTOR2D_PTR va, VECTOR2D_PTR vscaled) {vscaled-x k * va-x;vscaled-y k * va-y; }void _CPPYIN_Math::VectorScale(double k, VECTOR3D_PTR va, VECTOR3D_PTR vscaled) {vscaled-x k * va-x;vscaled-y k * va-y;vscaled-z k * va-z; }void _CPPYIN_Math::VectorScale(double k, VECTOR4D_PTR va, VECTOR4D_PTR vscaled) {vscaled-x k * va-x;vscaled-y k * va-y;vscaled-z k * va-z;vscaled-w 1; }double _CPPYIN_Math::VectorDot(VECTOR2D_PTR va, VECTOR2D_PTR vb) {return (va-x * vb-x) (va-y * vb-y); }double _CPPYIN_Math::VectorDot(VECTOR3D_PTR va, VECTOR3D_PTR vb) {return (va-x * vb-x) (va-y * vb-y) (va-z * va-z); }double _CPPYIN_Math::VectorDot(VECTOR4D_PTR va, VECTOR4D_PTR vb) {return (va-x * vb-x) (va-y * vb-y) (va-z * va-z); }void _CPPYIN_Math::VectorCross(VECTOR3D_PTR va, VECTOR3D_PTR vb, VECTOR3D_PTR vn) {vn-x ((va-y * vb-z) - (va-z * vb-y));vn-y -((va-x * vb-z) - (va-z * vb-x));vn-z ((va-x * vb-y) - (va-y * vb-x)); }void _CPPYIN_Math::VectorCross(VECTOR4D_PTR va, VECTOR4D_PTR vb, VECTOR4D_PTR vn) {vn-x ((va-y * vb-z) - (va-z * vb-y));vn-y -((va-x * vb-z) - (va-z * vb-x));vn-z ((va-x * vb-y) - (va-y * vb-x)); vn-w 1; }double _CPPYIN_Math::VectorLength(VECTOR2D_PTR va) {return sqrt(va-x * va-x va-y * va-y); }double _CPPYIN_Math::VectorLength(VECTOR3D_PTR va) {return sqrt(va-x * va-x va-y * va-y va-z * va-z); }double _CPPYIN_Math::VectorLength(VECTOR4D_PTR va) {return sqrt(va-x * va-x va-y * va-y va-z * va-z); }void _CPPYIN_Math::VectorNormalize(VECTOR2D_PTR va, VECTOR2D_PTR vn) {vn-x 0;vn-y 0;double length VectorLength(va);if (length EPSILON){return;}else{double lengthdao 1 / length;vn-x va-x * lengthdao;vn-y va-y * lengthdao;} }void _CPPYIN_Math::VectorNormalize(VECTOR3D_PTR va, VECTOR3D_PTR vn) {vn-x 0;vn-y 0;vn-z 0;double length VectorLength(va);if (length EPSILON){return;}else{double lengthdao 1 / length;vn-x va-x * lengthdao;vn-y va-y * lengthdao;vn-z va-z * lengthdao;} }void _CPPYIN_Math::VectorNormalize(VECTOR4D_PTR va, VECTOR4D_PTR vn) {vn-x 0;vn-y 0;vn-z 0;vn-w 0;double length VectorLength(va);if (length EPSILON){return;}else{double lengthdao 1 / length;vn-x va-x * lengthdao;vn-y va-y * lengthdao;vn-z va-z * lengthdao;vn-w 1;} }double _CPPYIN_Math::VectorCos(VECTOR2D_PTR va, VECTOR2D_PTR vb) {return VectorDot(va, vb) / (VectorLength(va) * VectorLength(vb)); }double _CPPYIN_Math::VectorCos(VECTOR3D_PTR va, VECTOR3D_PTR vb) {return VectorDot(va, vb) / (VectorLength(va) * VectorLength(vb)); }double _CPPYIN_Math::VectorCos(VECTOR4D_PTR va, VECTOR4D_PTR vb) {return VectorDot(va, vb) / (VectorLength(va) * VectorLength(vb)); } 不用多说了都是按照上面数学推导出来的公式直接实现。 3. 代码下载 完整项目源代码下载点击进入下载页 之前的一直忘了改资源分默认是1从这次开始我都改成0了。 4. 补充内容 1) 对于求向量范数的问题其实这个实现方式效率不高现在使用的勾股开方的形式实现而其实可以使用泰勒级数来计算近似值虽然有一点点误差但是运算速度大大提高。 2) 你可以发现我在做向量归一化的时候是先求了lengthdao 1 / length然后再去和三个分量做乘法而不是让他们分别去除以length。其实也是效率原因计算机做除法的速度远远慢于做乘法所以我们只做一次除法而做三次乘法这样简单的优化带来的效果却是非常明显的。 转自:http://blog.csdn.net/cppyin/archive/2011/02/07/6174087.aspx转载于:https://www.cnblogs.com/CoolJie/archive/2011/03/03/1970223.html
http://www.pierceye.com/news/248338/

相关文章:

  • 网站备案后经营做网站实例教程
  • 软件网站怎么做的python下载安装教程
  • 旅游网站开发分析报告网站建设教程搭建芽嘱湖南岚鸿信赖
  • 网站的配色方案高校网站建设意义
  • 滇中引水工程建设管理局网站网站开发怎样验收
  • ps制作网站logo阿里云网站备案拍照
  • 网站建设合同】wordpress翻书
  • 电商网站建设制作隆化县建设局网站
  • 宁波网站建设rswl网页美工设计教案
  • 贵州省住房城乡建设部网站json网站开发
  • 桥头网站仿做百度里面的站长工具怎么取消
  • 博物馆网站页面设计说明山东高端网站定制
  • python网站开发效率jsp做网站下载图片
  • 营销式网站建设免费注册个人网站官网
  • 高职高专 网站建设与维护开发一个网站平台多少钱
  • 网站后缀有哪些宜昌建设网站
  • iis做网站的流程wordpress有中文版没
  • 一般的美工可以做网站吗网站做相册
  • 扁平化网站psd招聘类网站怎么做
  • 想当淘客自己的网站怎么做服装网页设计网站
  • 网站怎么做数据接口wordpress主题知更
  • 注册网站登录企业网站建设论文模板
  • 营销型网站模板免费下载常用wordpress搭建环境
  • 浦东新区手机网站建设wordpress 视频页面
  • 做课件最好的素材网站网站背景动图怎么做
  • 做网站时已做好了ps怎么倒入深圳燃气公司地址
  • 做类似淘宝的网站要多少钱亚马逊网站建设进度计划书
  • 够完美网站建设怎么把视频弄成超链接
  • 苏州网站建设哪家更好四川省建设工程信息网官网二建注册
  • 潍坊网站关键词推广湖南餐饮网站建设