C# 两点之间方向距离的计算
两点之间的相关计算
public class PointCalculator
{
public static PointF CalcuDir(PointF Start, PointF End)//计算两点方向
{
PointF Dir = new PointF(End.X - Start.X, End.Y - Start.Y);
double Mod = Math.Sqrt(Dir.X * Dir.X + Dir.Y * Dir.Y);
Dir.X /= (float)Mod;
Dir.Y /= (float)Mod;
return Dir;
}
PointF Offset = new PointF(-Dir.Y, Dir.X);//
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示两点方向的垂直方向
public static void CalcuDir(PointF Start, PointF End, PointF Dir) //计算两点方向有参
带回
{
Dir.X = End.X - Start.X;
Dir.Y = End.Y - Start.Y;
double Mod = Math.Sqrt(Dir.X * Dir.X + Dir.Y * Dir.Y);
Dir.X /= (float)Mod;
Dir.Y /= (float)Mod;
}
public static float CalcuLength(PointF Start, PointF End)//计算两点之间的距离
{
PointF Diff = new PointF(End.X - Start.X, End.Y - Start.Y);
return (float)Math.Sqrt(Diff.X * Diff.X + Diff.Y * Diff.Y);
}
public static float CalcuLength2(PointF Start, PointF End)//计算两点之间距离的平方
{
PointF Diff = new PointF(End.X - Start.X, End.Y - Start.Y);
return (float)(Diff.X * Diff.X + Diff.Y * Diff.Y);
}
public static float CalcuDist(PointF p, PointF p1, PointF p2)//这个我也不清楚
{
PointF ab = new PointF(p2.X - p1.X, p2.Y - p1.Y);
PointF ac = new PointF(p.X - p1.X, p.Y - p1.Y);
float f = ab.X * ac.X + ab.Y * ac.Y;
if (f < 0)
return 10000;
float d = ab.X * ab.X + ab.Y * ab.Y;
if (f > d)
return 10000;
f /= d;
PointF pp = new PointF(p1.X + f * ab.X, p1.Y + f * ab.Y);
return CalcuLength(p, pp);
}
}