我有这个方法:
private static List<Point> ExtendPoints(Point pt1, Point pt2)
{
List<Point> ExtendedPoints = new List<Point>();
decimal i = (Math.Sqrt(Math.Pow(Math.Abs(pt1.X - pt2.X), 2) + Math.Pow(Math.Abs(pt1.Y - pt2.Y), 2) + Math.Pow(Math.Abs(z1 - z2), 2)));
return ExtendedPoints;
}
我需要找到两点pt1和pt2之间的精确x和y坐标。 结果应该是例如:12,13,这个坐标恰好位于两点之间的中间位置。
我现在使用小数和数学计算的方式不正确。
答案 0 :(得分:5)
只需添加组件的值并除以2:
private static Point MidPoint(Point pt1, Point pt2)
{
var midX = (pt1.X + pt2.X) / 2;
var midY = (pt1.Y + pt2.Y) / 2;
return new Point(midX, midY);
}
请注意,不确定您正在使用哪个Point
课程。如果是System.Drawing.Point
,则可能会出现整数截断问题。
另外,我不确定你要对List<Point> ExtendedPoints
做什么,据我所知,两点之间只有1个中点。我也不确定你对z1
和z2
做了什么。如果您使用3维点,则可以扩展我的答案并轻松添加第三维。
答案 1 :(得分:2)
为什么不呢
double dist = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));