求一个好的算法!

lichliu 2007-06-15 11:00:29
很简单,求平面上一点,到这个平面的一条线段的距离,注意是线段不是直线。
...全文
184 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2007-06-15
  • 打赏
  • 举报
回复
private double PointToLine( // 计算点到线段的距离
Point APoint, // 点的坐标
Point ALineA, Point ALineB // 线段的坐标
) // 返回点到直线的距离
{
if (ALineA.X == ALineB.X && ALineA.Y == ALineB.Y)
return 0;
double T = ((double)(ALineA.X - ALineB.X) * (ALineA.X - APoint.X) +
(ALineA.Y - ALineB.Y) * (ALineA.Y - APoint.Y)) /
((ALineA.X - ALineB.X) * (ALineA.X - ALineB.X) +
(ALineA.Y - ALineB.Y) * (ALineA.Y - ALineB.Y));
if (T > 1)
T = 1.0;
else if (T < 0)
T = 0.0;
double X = ALineA.X + T * (ALineB.X - ALineA.X);
double Y = ALineA.Y + T * (ALineB.Y - ALineA.Y);
return Math.Sqrt((X - APoint.X) * (X - APoint.X) +
(Y - APoint.Y) * (Y - APoint.Y));
}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Point vLineA = new Point(30, 30);
Point vLineB = new Point(45, 75);
using (Graphics vGraphics = CreateGraphics())
{
vGraphics.DrawLine(Pens.Black, vLineA, vLineB);
}
Text = PointToLine(e.Location, vLineA, vLineB).ToString();
}

//原理就不说了,测试效果吧
qgcsoft 2007-06-15
  • 打赏
  • 举报
回复
你在搞几何吗?先帮你顶一下在说
lichliu 2007-06-15
  • 打赏
  • 举报
回复
自己顶一下,在线等

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧