3d数学总结帖
3d数学总结帖,以下是对3d学习过程中数学知识的简单总结
- 角度值和弧度制的互转
- Deg2Rad 角度A1转弧度A2 => A2=A1*PI/180
- Rad2Deg 弧度A2转换角度A1 => A1=A2*180/PI
- u3d中Math.Infinity表示正无穷大,不代表任何具体数值,不能用于具体数值计算中。
Math.Infinity /Math.Infinity = NaN( Not a Number) - u3d中(左手坐标系),绕坐标轴按顺时针旋转角度为正值,按逆时针旋转角度为负值。(待验证)
- 已知当前点为Target,目标点沿着Target的Y轴旋转45度,沿着自身X轴延伸4米求目标点的3D坐标。
// 1. 已知当前点为Target,目标点沿着Target的Y轴旋转45度,沿着自身X轴延伸4米求目标点的3D坐标
void Test1()
{
Quaternion rot = Quaternion.Euler(0,45,0) * m_target.rotation;
Vector3 destPos = rot * new Vector3(4,0,0);
Debug.DrawLine(m_target.position,destPos,Color.red);
transform.rotation = rot;
transform.position = destPos;
Debug.Log("newPos = " + destPos + " targetPos = " + m_target.position
+ " ditance = " + Vector3.Distance(destPos,m_target.position));
}
- 向量点乘相关dotProduct
- 满足交换律
- dot(a,b) = |a|*|b|cos(A)
- 几何意义:点乘结果越大,两个向量越接近。
- 结果dot > 0 表示两个向量夹角在[0,90)之间,方向相同。
- 结果dot = 0 表示两个向量夹角为90度,相互垂直正交。
- 结果dot < 0 表示两个向量夹角为(90,180]度,方向相反。
- 向量叉乘crossProduct
- 不满足交换律 a x b = - b x a
- a x b = |a|*|b|sin(A)
- 叉乘得到的向量垂直于原来的两个向量。
- 叉乘方向的判断
//计算两个向量ab的法向量的方向
void Test4()
{
Quaternion r0 = transform.rotation;
// r0 * Vector3.forward 计算物体朝向的单位向量
//Quaternion r1 = Quaternion.Euler(0,viewAngle,0) * transform.rotation;
//Quaternion r2 = Quaternion.Euler(0,-viewAngle,0) * transform.rotation;
//make it faster
Quaternion r1 = Quaternion.Euler(transform.rotation.eulerAngles.x,transform.rotation.eulerAngles.y + viewAngle,transform.rotation.eulerAngles.z);
Quaternion r2 = Quaternion.Euler(transform.rotation.eulerAngles.x,transform.rotation.eulerAngles.y - viewAngle,transform.rotation.eulerAngles.z);
Vector3 dest = transform.position + r0 * Vector3.forward * distance;
Vector3 va = transform.position + r1* Vector3.forward * distance;
Vector3 vb = transform.position + r2 * Vector3.forward * distance;
Debug.DrawLine(transform.position,va,Color.blue);
Debug.DrawLine(transform.position,vb,Color.red);
//在左手坐标系下,在XZ平面上忽略Y轴,判断向量a和向量b的方位(a在b的顺时针方向还是逆时针方向)
//可以通过向量axb的叉乘结果法向量normal的方向来判断。
// 如果normal.y > 0 : b在a的顺时针方向
// 如果normal.y < 0 : b在a的逆时针方向
// 如果normal.y = 0 : b和a方向相同
// 右手坐标系正好相反
//计算法向量
Vector3 normal = Vector3.Cross(va,vb).normalized * 5; // normal.y < 0
//Vector3 normal = Vector3.Cross(vb,va).normalized * 5; // normal.y > 9
Debug.DrawLine(transform.position,transform.position + normal,Color.yellow);
}
其中蓝色为向量a,红色为向量b,ab所在平面的法向量y<0
代码链接
3d数学总结帖的更多相关文章
- 3D数学的实际应用
以前自己在学习三维程序开发时并没有在意3D数学在程序中的重要作用,但在实际工作中逐渐发现:自己忽视了3D数学的作用,我们实际开发工作总要求模型准确的变换,而不是强调渲染有多炫,那是游戏,如果是仿真程序 ...
- 3D数学 ---- 矩阵和线性变换[转载]
http://blog.sina.com.cn/s/blog_536e0eaa0100jn7c.html 一般来说,方阵能描述任意线性变换.线性变换保留了直线和平行线,但原点没有移动.线性变换保留直线 ...
- Unity3D之空间转换学习笔记(三):3D数学
3D数学基础 向量 向量可以看做具有方向和大小的一条线段. 比如:我们如果用点A减去点B,则可以得到一个向量,该向量的方向为点B面向点A的方向,而大小为两点的距离.这个方法在游戏开发中经常用到,比如我 ...
- 3D数学学习笔记——笛卡尔坐标系
本系列文章由birdlove1987编写.转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24601215 1.3D数学 ...
- 3D数学读书笔记——矩阵基础
本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031 矩 ...
- Unity3D学习笔记(五):坐标系、向量、3D数学
Unity复习 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ...
- 3D数学读书笔记——四元数
本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/25400659 什么是四元数 ...
- Unity3D for VR 学习(6): 再次温故知新-3D数学
一年前,系统学习过3D数学,并记录了一篇博客<C#程序员整理的Unity 3D笔记(十):Unity3D的位移.旋转的3D数学模型>. 一年后,再次温习之. 坐标系:Unity3D使用左手 ...
- 3D数学读书笔记——矩阵基础番外篇之线性变换
本系列文章由birdlove1987编写.转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25102425 前面有一篇文章 ...
随机推荐
- python2.7安装matplotlib遇到的问题及解决方法
python2.7下import matplotlib报错 第一个报错是:缺少这个pyparsing-2.1.4.win32-py2.7.exe 直接下载安装就行 第二个报错是:缺少cycler 这个 ...
- Apache Flume 1.7.0 发布,日志服务器
Apache Flume 1.7.0 发布了,Flume 是一个分布式.可靠和高可用的服务,用于收集.聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型.这是一个可靠.容错的服务. 本次更 ...
- wp8开发笔记之开发环境的搭建
开发工具的下载: Windows phone sdk 8.0下载地址: http://www.microsoft.com/ZH-CN/download/details.aspx?id=35471 开发 ...
- SharePoint Site "Language Settings"功能与CSOM的对应
博客地址:http://blog.csdn.net/FoxDave SharePoint网站中的语言设置:"Language Settings",可以用CSOM通过Site的一些 ...
- Cocoapods的安装
1.先升级Gem sudo gem update --system 2.切换cocoapods的数据源 [先删除,再添加,查看] gem sources --remove https://rubyge ...
- Meta http-equiv属性与HTTP头的Expires中(Cache-control)详解
一.概述 A.http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就 ...
- python wordcloud 对电影《我不是潘金莲》制作词云
上个星期五(16/11/18)去看了冯小刚的最新电影<我不是潘金莲>,电影很长,有点黑色幽默.看完之后我就去知乎,豆瓣电影等看看大家对于这部电影的评价.果然这是一部很有争议的电影,无论是在 ...
- 国内app快速生成平台对比
泰格老虎 2013-03-07 00:39:10 这是海恒CEO高鹏写的一篇国内app快速生成平台对比文章,介绍了国内快速生成APP的平台与自己平台的对比,很有参考价值. 同类网站 安米网 http ...
- Android数据存储-读取内部存储空间数据
内部存储空间的默认位置 data/data/应用名称 写数据,获取FileOutPutStream的方式 1.直接写死路径的方式 FileOutputStream fos = new FileOutp ...
- 一些初级Java错误,不定期增加
1. Error: Dangling meta character '*' near index 0 对字符串使用split()方法截取 * ? + / | 等字符的时候会报以下异常 Dangling ...