111,120
社区成员
发帖
与我相关
我的任务
分享static float AngleInDegree(PointF p1, PointF p2, PointF p3)
{
PointF p12 = Normalize(Subtract(p1, p2));
PointF p32 = Normalize(Subtract(p3, p2));
return (float)(Math.Acos(Dot(p12, p32)) * 180 / Math.PI);
}
static float Dot(PointF p1, PointF p2)
{
return p1.X * p2.X + p1.Y * p2.Y;
}
static PointF Subtract(PointF p1, PointF p2)
{
return new PointF(p1.X - p2.X, p1.Y - p2.Y);
}
static PointF Normalize(PointF p)
{
float length = (float) Math.Sqrt(p.X * p.X + p.Y * p.Y);
if (length < 10e-6) throw new ArgumentException();
return new PointF( p.X / length, p.Y/length);
}