已知三个点的坐标,求夹角 A(x1,y1) B(x2,y2) C(x3,y3) 判断AC与BC夹角是否大于90度 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static float Angle(Point cen, Point first, Point second) { float dx1, dx2, dy1, dy2; float angle; dx1 = first.X - cen.X; dy1 = first.Y - cen.Y; dx2 = second.X - cen.X; dy2 = second.Y - cen.Y; float c = (float)Math.Sqrt(dx1 * dx1 + dy1 * dy1) * (float)Math.Sqrt(dx2 * dx2 + dy2 * dy2); if (c == 0) return -1; angle = (float)Math.Acos((dx1 * dx2 + dy1 * dy2) / c); return angle; } 判断一下AB^2同AC^2 + BC^2的大小关系即可,AC^2直接通过坐标的平方就可以求出来。 初三的都忘了,只能用初二的方法了: if (((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) > ((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3) + (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3))) { MessageBox.Show("大于90度"); } http://blog.csdn.net/wangyue4/archive/2010/05/20/5611309.aspx根据余弦定理求两个线段夹角 Point p1 = new Point(1, 1);Point p2 = new Point(2, 2);Vector v = p2 - p1;double angle = Math.Atan2(v.Y, v.X) * 180 / Math.PI; 如果只是判断和90°的关系,不用用余弦定理,多了很多步只要判断夹角的两边平方的和A和对边的平方B的关系就行了A>B <90°A<B >90°A=B =90° 一个datatable 和一个 AlarmModule = new AlarmModule[] 虚拟拖动窗体左边框为什么右边框抖动很厉害? C# Fri Feb 24 00:00:00 CST 2012 日期转换 请教有关winform下水晶报表的问题。 Treeview 列举数据库表名 作为新的查询条件 求助:如何做多个控件之间的连线啊? 提一个无知的问题..关于ado.net的.也关于企业库和.net 2.0 如何使用.net1.2的类库啊. 如何用C#实现Telnet,急? JSON的问题,求教 TabControl的tabpage切换问题 请教个小问题
{
float dx1, dx2, dy1, dy2;
float angle; dx1 = first.X - cen.X;
dy1 = first.Y - cen.Y; dx2 = second.X - cen.X; dy2 = second.Y - cen.Y; float c = (float)Math.Sqrt(dx1 * dx1 + dy1 * dy1) * (float)Math.Sqrt(dx2 * dx2 + dy2 * dy2); if (c == 0) return -1; angle = (float)Math.Acos((dx1 * dx2 + dy1 * dy2) / c);
return angle;
}
if (((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) > ((x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3) + (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3)))
{
MessageBox.Show("大于90度");
}
根据余弦定理求两个线段夹角
Point p1 = new Point(1, 1);
Point p2 = new Point(2, 2);
Vector v = p2 - p1;
double angle = Math.Atan2(v.Y, v.X) * 180 / Math.PI;
A<B >90°
A=B =90°