求三角形的各个角的度数,主要是求角的数学公式:
cosB,cosC 同理。
对应的代码如下:
/*
na表示角A,nb表示角B,nc表示C
*/
function getAngle(na:Point,nb:Point,nc:Point):void{
var a:Number=Math.sqrt(Math.pow((nc.x-nb.x),2)+Math.pow((nc.y-nb.y),2));
var b:Number=Math.sqrt(Math.pow((nc.x-na.x),2)+Math.pow((nc.y-na.y),2));
var c:Number=Math.sqrt(Math.pow((na.x-nb.x),2)+Math.pow((na.y-nb.y),2));
var cosA:Number=(Math.pow(c,2)+Math.pow(b,2)-Math.pow(a,2))/(2*b*c);
var cosB:Number=(Math.pow(a,2)+Math.pow(c,2)-Math.pow(b,2))/(2*a*c);
var cosC:Number=(Math.pow(a,2)+Math.pow(b,2)-Math.pow(c,2))/(2*b*a);
trace(Math.acos(cosC)*(180/Math.PI));//acos是反余弦值
trace(Math.acos(cosB)*(180/Math.PI));
trace(Math.acos(cosA)*(180/Math.PI));
trace((Math.acos(cosA)*(180/Math.PI)).toFixed(2));//toFixed 返回值是String
var ja:Number=Number((Math.acos(cosA)*(180/Math.PI)).toFixed(2)) ;
var jb:Number=Number((Math.acos(cosB)*(180/Math.PI)).toFixed(2)) ;
var jc:Number=Number((Math.acos(cosC)*(180/Math.PI)).toFixed(2)) ;
txta.text=ja.toString()+"°";
txtb.text=jb.toString()+"°";
txtc.text=jb.toString()+"°";
}
有参考的链接:http://www.hangge.com/blog/cache/detail_1087.html 涉及到atan,推测的acos的用法求角度,结果正确。
界面如下图
有问题没有问题都欢迎来讨论~