沿线段获得某一百分比的点

时间:2014-12-01 20:57:09

标签: c# geometry line

我有一个方法返回由两个点定义的线段的中点;

public static PointF GetMidPoint(PointF p1, PointF p2)
{
    return new PointF((p1.X + p2.X) / 2, (p1.Y + p2.Y) / 2);
}

完全符合预期。

但是,我现在需要在细分中找到一个任意的百分比(比方说,35%),这原则上应该(?)一样容易;

public static PointF GetArbitaryPoint(PointF p1, PointF p2, double percentage)
{
    return new PointF((p1.X + p2.X) / percentage, (p1.Y + p2.Y) / percentage);
}

但情况似乎并非如此,我认为这是一个问题#问题 - 只要你引入一个小数点(无论是Point还是PointF),它就会把玩具从玩具中扔出来并返回奇异结果

所以我想问题是如何修改上述内容以使其完成我需要的工作?

提前致谢。

1 个答案:

答案 0 :(得分:4)

您使用的是错误的公式。

两点之间的加权中间值为p1 + (p2-p1) * percentage,恰好可以计算为p1 + (p2-p1)*0.5 = (p1 + p2) * 0.5

的0.5