三角函数:正弦余弦定理及应用
紧接上一篇:http://blog.csdn.net/yinhun2012/article/details/79384273
这一篇我们来推导一些常用的三角函数公式,主要方便以后图形程序中的计算。
1.余弦定理公式
余弦定义主要作用是依靠已知三角形的两条边及其夹角,求第三边的情况,如下图:
这里我们不处理向量(矢量)运算,单纯的从标量数值长度的推算入手,建立垂线后,得到的直角三角形ADC,可以通过勾股定理(前面推过)和sin²α+cos²α=1得到上面两个公式,后面的公式对我们求角度有很大帮助,而且这两个公式对后面图形方面计算会起到很大的帮助。
1.正弦定理的推导,前面有余弦定理,那么肯定就有一个对应的正弦定理了。
ps:这里要了解一个外接圆的概念,就是三角形△ABC的三个顶点都在一个圆上,那么这个圆就是△ABC的外接圆,其实这个也好反向理解,比如我们先画一个圆,然后任意在圆上取三点,连接三点就是一个三角形,但是假如我们不知道三角形的外接圆,要怎么去绘画和证明呢,如下图:
上面我们通过两条垂直平分线,就能得到△AOB和△BOC,且两三角形为等腰三角形(这个很好看出来,△AOB被平分成共边的两个一样的直角三角形),那么OA = OB = OC,所以O为圆心做半径OA的圆就是外接圆了。
接下来继续推导正弦公式,如下图:
上面我们推导了外接圆,那么接下来我们只需要建立等腰三角形△AoB △AoC △ BoC,将∠A转化成∠θ,就能得到上面的正弦定理了。
接下来到实际程序应用环节了,其实在实际项目开发中,余弦定理我用的还是挺多的,比如:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AngleFunc : MonoBehaviour {public GameObject PointA;public GameObject PointB;public GameObject PointC;void Start(){{ //构建一个三角形GameObject[] gos = new GameObject[3];gos[0] = PointA;gos[1] = PointB;gos[2] = PointC;for (int i = 0; i < gos.Length; i++){LineRenderer line = gos[i].AddComponent<LineRenderer>();line.positionCount = 2;line.startWidth = 0.1f;line.endWidth = 0.1f;int index = i + 1;if (index >= gos.Length)index = 0;line.SetPosition(0, gos[i].transform.position);line.SetPosition(1, gos[index].transform.position);}}//用余弦定理计算角度Vector3 AB = PointB.transform.position - PointA.transform.position;Vector3 BC = PointC.transform.position - PointB.transform.position;Vector3 AC = PointC.transform.position - PointA.transform.position;//计算∠A的夹角float angle1 = Mathf.Acos((getVectorLengthPow2(AB) + getVectorLengthPow2(AC) - getVectorLengthPow2(BC)) / (2 * Mathf.Sqrt(getVectorLengthPow2(AB) * getVectorLengthPow2(AC)))) * Mathf.Rad2Deg;//用自带的api计算角度float angle2 = Vector3.Angle(AB, AC);
#if UNITY_EDITORDebug.LogFormat("angle1 = {0} angle2 = {1}", angle1, angle2);
#endif}private float getVectorLengthPow2(Vector3 vec){return Mathf.Pow(vec.x, 2) + Mathf.Pow(vec.y, 2) + Mathf.Pow(vec.z, 2);}}
代码比较少,直接贴上来了,主要就是用三角函数计算夹角值,其实unity中有自带的api,但是我们要知道公式的推导来源
三角函数:正弦余弦定理及应用相关推荐
- java中反三角函数怎么写,Java 数学三角函数正弦、余弦、正切以及反正弦、反余弦、反正切函数的使用...
Java 数学三角函数正弦.余弦.正切以及反正弦.反余弦.反正切函数的使用 Java中数据三角函数在Math类里面有封装好的对应方法,正弦函数是sin方法,余弦函数是cos方法,正切函数是tan方法, ...
- 使用Python实现拉马努金的三角函数正弦公式
最近其实是在看<数学女孩>的书籍,看着看着觉得中间的故事情节确实是累赘了.切换一下思维,找来了之前看过的拉马努金的故事.看到了其中的公式之后,简单实用程序实现了一下,做一下简单的验证. 在 ...
- 三角函数π/2转化_可打印丨初中数学三角函数公式
朗读君提醒 点击图片跳转至小程序 即可[下载打印] ▼ 定义式 锐角三角函数 任意角三角函数 图形 直角三角形 任意三角函数 正弦(sin) 余弦(cos) 正切(tan或tg) 余切(cot或ctg ...
- 计算机用三角函数时如何用弧度制,三角函数1任意角和弧度制.PPT
三角函数1任意角和弧度制 ●课程目标 1.知识与技能目标 (1)了解任意角的概念和弧度制,能正确地进行弧度与角度的互化. (2)借助单位圆理解任意角三角函数(正弦.余弦.正切)的定义. (6)结合具体 ...
- 如何设置弧度 html,JavaScript中弧度和角度的转换
弧度 = 角度 * Math.PI / 180 角度 = 弧度 * 180 / Math.PI 在JavaScript Math 对象中: sin() 方法可返回一个数字的正弦. tan() 方法可返 ...
- band math函数_ENVI波段运算(bandmath)运算逻辑及常用运算符详解
最近用ENVI做了下区域绿化覆盖度的分析,也算是简单应用了下ENVI这个软件,这篇简单介绍下ENVI的波段运算的运算逻辑和常用的运算符. BandMath工具能够方便的执行图像中各个波段的加.减.乘. ...
- 罗德里格斯(Rodrigues)旋转方程推导
罗德里格斯旋转方程是从角度和向量计算出相应的旋转矩阵,这个旋转方程在很多方面有重要的应用,这里简要概述一下方程的推导过程. 主要参考资料是维基百科,其实基本上就是翻译一下,自己走一遍这个推导过程,这里 ...
- numpy基础笔记01
import numpy as np # padas是numpy的升级版本 # numpy属性 #列表转换成矩阵 array=np.array([[1,2,3],[4,5,6]]) print(arr ...
- 用Mathematica和SciPy阐明Jacobi椭圆函数的定义方法
这,这个,那,那个Jacobi椭圆函数SN和CN类似于三角函数正弦和余弦.它们出现在非线性振动和保形映射等应用中.不幸的是,定义这些函数有多种约定.这篇文章的目的是澄清围绕这些不同公约的混淆. 上面的 ...
- matlab adaptfilt.rls,基于RLS算法的多麦克风降噪
<信息处理课群综合训练与设计> 课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 基于RLS算法的多麦克风降噪 设计任务: 给定主麦克风录制的受噪声污染的语音信号和 ...
最新文章
- Digital Realty计划在德克萨斯州建设三层数据中心
- linux_OEL5.4_安装Oracle11g中文教程图解
- python 描述器_python 描述器
- Netty 在 Dubbo 中是如何应用的?
- ThinkJava-复用类
- 林鹏:解析P2P金融安全风险
- SAP UI5 jQuery.sap.getModulePath 的工作原理
- 前端学习(3314):提取action
- Centos7搭建Redis,同一服务器启动两个端口的Redis
- 配置mysql 问题解决
- BackgroundWorker的包装器
- php行为和事件是什么,Yii Framework框架中事件和行为的区别及应用实例分析
- 低危漏洞- X-Frame-Options Header未配置
- mangodb和php比较,php-mongodb从不同的数据库中选择
- python车流量检测车流统计车辆计数yolov5 deepsort车流检测
- 2021最新Java JDK1.8的安装教程
- Linux运维——Vim编辑器
- 数据湖技术之Hudi 集成 Spark
- mutual information matlab,Mutual information and Normalized Mutual information 互信息和标准化互信息...
- AI元宇宙敲门砖【3.2】:太好听了吧,和AI一起唱,一起做虚拟偶像