首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

三个顺序的点形成两个线段间的夹角如何算

2012-03-21 
三个顺序的点形成两个线段间的夹角怎么算?如题[解决办法]http://topic.csdn.net/t/20051117/10/4399283.ht

三个顺序的点形成两个线段间的夹角怎么算?
如题

[解决办法]
http://topic.csdn.net/t/20051117/10/4399283.html
[解决办法]
a*a+b*b=2*a*b*cosC 其中a、b是两条线段。根据坐标求线段应该会求吧
真的是考几何体呢 ~_!
[解决办法]
a*a+b*b=2*a*b*cosC
[解决办法]
[color=#FF6600]这个其实很好实现的,以这两个线段的交点为原点,这样就有一个坐标系了.
把每条线段和X轴的角度计算出来,再求差值,不就是这个两个线段的夹角.
希望有帮助.[/color]
[解决办法]
三个点,你可以分别得到他们的坐标么?

如果可以,那就好办了,根据几何算法计算就OK了。
[解决办法]

C# code
        private void button1_Click(object sender, EventArgs e)        {            string[] strPoint=textBox1.Text.Split(',');            double[] dPoint=new double[6];            for(int i=0;i<strPoint.Length;i++)                dPoint[i] = double.Parse(strPoint[i]);            textBox2.Text = getAngle(dPoint).ToString();        }        double getAngle(double[] dPoint)  //6个double 依次为x1,y1,x2,y2,x3,y3        {            double s1, s2, s3,p,S;             s1=Math.Sqrt(Math.Pow(dPoint[0]-dPoint[2],2)+Math.Pow(dPoint[1]-dPoint[3],2));            s2=Math.Sqrt(Math.Pow(dPoint[4]-dPoint[2],2)+Math.Pow(dPoint[5]-dPoint[3],2));            s3=Math.Sqrt(Math.Pow(dPoint[0]-dPoint[4],2)+Math.Pow(dPoint[1]-dPoint[5],2));            p = (s1 + s2 + s3) / 2;            S = Math.Sqrt(p * (p - s1) * (p - s2) * (p - s3));            return Math.Round(180*Math.Asin(2 * S / (s1 * s2))/3.14,1);//保留1位小数        } 

热点排行