求一个好的算法! 很简单,求平面上一点,到这个平面的一条线段的距离,注意是线段不是直线。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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();}//原理就不说了,测试效果吧 控件对齐问题 菜鸟求助 新建达特提么对象 加密狗使用问题 使用commandname 删除 如何把FileListBox控件里面的文件列表显示为资源列表里面查看平铺的样式? 求把数据导出到EXCEL的解决办法,急啊,毕业设计就差这个了,哪位高手加好心人进来看下啊 VisualSourceSafe 哪里有的下载啊 .net 实现页面弹出框的问题 系统托盘里显示ioc图标后,点ico图标就会出来主窗体,但是,是最小化状态,怎么让它还原成原来那么大?? 现在的出版社真是为赚钱不择手段!垃圾书猛出!买了几本错字连天!我靠!学习C#还不如看msdn! 问个SQL语句 关于属性
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();
}//原理就不说了,测试效果吧