续: http://blog.csdn.net/yinhun 2012/article/details/79384273
在本篇中,我们来导出几个常用的三角函数公式。 主要便于今后图形程序中的计算。
1 .馀弦定理公式
馀弦定义的主要作用是根据已知三角形的两条边及其夹角求出第三条边,如下图所示。
这里不涉及向量(向量)运算,只是从标量数值长度的估计开始。 垂线垂直后,得到的直角三角形ADC可以通过梯度定理(前面推出)和sin cos=1得到以上两个公式。 后面的公式有助于求出角度。 而且,这两个公式对后面图形的计算有很大的帮助。
1 .正弦定理的推导,前面有余弦定理,所以一定有相应的正弦定理。
ps :这里必须理解一个外接圆的概念。 如果三角形ABC的三个顶点位于一个圆上,则这个圆是ABC的外接圆。 其实这个也请反过来理解。 例如,先画一个圆,然后任意在圆上取三点。 把三点连接起来就是一个三角形。 但是,如果不知道三角形的外接圆,怎么画画和证明呢? 如下图所示。
通过上面的两条垂直平分线,可以得到AOB和BOC。 而且,两个三角形是等腰三角形。 AOB被两个共享边的相同直角三角形平分。 (于是,由于OA=OB=OC,所以以o为圆心构成半径OA的圆为外接圆。
如下图所示,继续导出正弦公式。
上导出了外接圆,然后只需建立等腰三角形AoB AoC BoC,将A变换为,即可得到上的正弦定理。
接下来来到了实际的APP应用环节,实际上在实际的项目开发中余弦定理我经常使用。 例如:
using System.Collections; using system.collections.generic; using UnityEngine; publicclassanglefunc : mono behaviour { publicgameobjectpointa; 公共game object pointb; 公共game object point c; void Start () /三角形的game object [ ] gos=new game object [3]; GOS[0]=指针; gos[1]=PointB; gos[2]=PointC; for(intI=0; i gos.Length; I ) linerendererline=gos [ I ].addcomponentlinerenderer (; 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 ); (//用余弦定理计算角度vector 3ab=pointb.transform.position-pointa.transform.position; vector 3bc=point c.transform.position-pointb.transform.position; vector 3ac=point c.transform.position-pointa.transform.position; //a的夹角float angle1=mathf.acos (getvectorlengthpow2(ab ) getvectorlengthpow2) AC )-getvectorlengthpow2(BC ) //使用自带的api计算角度floatangle2=vector3.angle(ab,AC ) # if unity _ editor debug.logformat (angle1={0} angle2={1} # endif } privatefloatgetvectorlengthpow2(vector3vec ) returnmathf.pow ) vec.x,2 ) mathf.pow ) vec.y,2 ) mathf } 主要使用三角函数计算夹角值。 实际上,unity有附属的api,但需要知道公式的导出源