三角函数:
概念:用来描述三角形中某个角和对应的三条边的比例关系。
正弦:sin<θ>(sin<theta>)=对边/斜边
余弦:cos<θ>(cos<theta>)=邻边/斜边
正切:tan<θ>(tan<theta>)=对边/邻边
 
正弦函数曲线:随着θ角度不断增大,sinθ的值的变化周期

 
余弦函数曲线:正弦函数曲线左移90度

 
反三角函数:已知比例关系,反推出角度或者弧度。
反正弦:Arcsin(0.5)=30度
反余弦:Arccos
反正切:Arctan
 
向量的乘法:
向量的点乘:a(ax,ay,az) · b(bx.by.bz)
数学运算:a·b = axbx + ayby + azbz,各分量分别相乘再相加
1、满足乘法交换律
2、结果是标量
几何意义:
a·b = |a| * |b| * cos<a,b>,<a,b>夹角范围0~180度,两个向量夹角越小,相似度越高
a·b = (|a| * cos<a,b>) * |b|,最重要的几何意义就是求投影
1、a向量在b向量方向上投影的长度再乘以b向量的模长
2、当b向量为单位向量的时候,结果就是:a向量在b向量方向上投影的长度
3、当a向量和b向量都是单位向量的时候,结果就是:两个向量的夹角的余弦
 
敌人的正前方和敌人与自己连线的夹角,小于90度,在敌人前方,大于90度,在敌人后方
API Vector3.Dot(Vector3 lhs,Vector3 rhs),两个向量点乘满足乘法交换律,但叉乘不行
API Vector3.Angle,直接计算两个向量之间的夹角
 
思考题:入射光线和反射光线不在一个水平线上
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyLook : MonoBehaviour
{
public Transform player;
public float result;
public float distance;
// Use this for initialization
void Start()
{
////向量点乘的数学运算
//Vector3 enemy2Player = player.position - transform.position;
//Vector3 enemyForward = transform.forward;
//result = enemy2Player.x * enemyForward.x + enemy2Player.y * enemyForward.y + enemy2Player.z + enemyForward.z;
//把向量变成单位向量
Vector3 enemy2Player = (player.position - transform.position).normalized;
Vector3 enemyForward = transform.forward;
//计算两个向量之间的夹角
result = Vector3.Dot(enemy2Player, enemyForward);
//计算两个物体之间的距离
distance = Vector3.Distance(player.position, transform.position);
//API:计算两个向量之间的夹角
//Vector3.Angle();
}
// Update is called once per frame
void Update()
{
}
private void OnGUI()
{
//if (result > 0)
//{
// GUILayout.Label("在敌人前方");
//}
//else
//{
// GUILayout.Label("在敌人后方");
//}
if (result > Mathf.Cos( * Mathf.Deg2Rad) && distance < )
{
GUILayout.Label("在扇形范围内:" + Mathf.Acos(result) * Mathf.Rad2Deg + "度");
}
else
{
GUILayout.Label("不在扇形范围内:" + Mathf.Acos(result) * Mathf.Rad2Deg + "度");
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestTrans : MonoBehaviour {
public Transform Target;
public float distance;
private float SkillDistance = ;//扇形距离
private float SkillJiaodu = ;//扇形的角度
// Use this for initialization
void Start () {
////偶然性编程
distance = Vector3.Distance(transform.position, Target.position);//距离
Vector3 norVec = transform.rotation * Vector3.forward;
Vector3 temVec = Target.position - transform.position;
Debug.DrawLine(transform.position, norVec, Color.red);//画出技能释放者面对的方向向量
Debug.DrawLine(transform.position, Target.position, Color.green);//画出技能释放者与目标点的连线
float jiajiao = Mathf.Acos(Vector3.Dot(norVec.normalized, temVec.normalized)) * Mathf.Rad2Deg;
if (distance <= SkillDistance)
{
if (jiajiao <= SkillJiaodu)
{
Debug.Log("在扇形范围内");
}
else
{
Debug.Log("不在扇形范围内");
}
}
} // Update is called once per frame
void Update () { }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CrystalMove : MonoBehaviour {
//public Transform startTrans;
//public float moveSpeed = 1;
//public float rotSpeed = 1;
public float rotateSpeed = ;
//调节上下频率和浮动
public float amplitude = 1f;
public float frequency = 1f;
// Use this for initialization
void Start () { } // Update is called once per frame
void Update () {
// transform.Rotate(Vector3.up, Space.World);
// Vector3 delta = Vector3.up * Mathf.Sin(Time.time) * moveSpeed*0.25F;
// transform.position = startTrans.position + delta;
transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed);
float sin = Mathf.Sin(Time.time * frequency) * amplitude;
transform.Translate(Vector3.up * sin, Space.World);
}
}

Unity3D学习笔记(六):三角函数和点乘的更多相关文章

  1. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  2. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  3. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  5. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  6. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  7. Linux学习笔记(六) 进程管理

    1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...

  8. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  9. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  10. unity3d学习笔记(一) 第一人称视角实现和倒计时实现

    unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...

随机推荐

  1. SQL SERVER 事务执行情况跟踪分析

    [sql] view plain copy ---查看现在所有的事务 select '正在运行事务的会话的 ID'=session_id, --session_id与transaction_id的对应 ...

  2. 前端 HTML body标签相关内容 常用标签 图片标签 <img/>

    图片标签 <img/> 一个网页除了有文字,还会有图片.我们使用<img/>标签在网页中插入图片. <img/> 是单闭合标签 语法:<img src=&qu ...

  3. mysql 数据操作 多表查询 多表连接查询 全外连接

    全外连接:显示左右两个表全部记录 全外连接 在内连接的基础上保留左右两表没有对应关系的记录 full join #注意:mysql不支持全外连接 full JOIN mysql> select ...

  4. Android应用之——百度地图最新SDK3.0应用,实现最经常使用的标注覆盖物以及弹出窗覆盖物

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/yanglfree/article/details/33333413 一.概述 最新版的百度地图SDK ...

  5. google浏览器mac上跨域问题解决

    open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/ /Use ...

  6. 网站用sqlite库,报attempt to write a readonly database,解决方法

    将sqlite数据库文件,设置为users完全控制.重启网站即可!

  7. 搭建本地离线yum仓库

    目录 前言 把rpm包下载到本地 配置本地yum仓库信息 生成repodata信息 检查以及使用 对本地仓库进行更新 参考资料 修改记录 环境:VMware-Workstation-12-Pro,Wi ...

  8. AngularJS 表达式 对象和数组

    AngularJS 使用 表达式 把数据绑定到 HTML. AngularJS 表达式 AngularJS 表达式写在双大括号内:{{ expression }}. AngularJS 表达式把数据绑 ...

  9. 去掉python的警告

    1.常规警告 import warnings warnings.filterwarnings("ignore") 2.安装gensim,在python中导入的时候出现一个警告: w ...

  10. android开发中遇到的一些问题

    buildToolsVersion 设置buildtool版本 今天遇到一个奇怪问题instant not supported 原来是设置显示offline...这个很无语,adb devices又能 ...