【发布时间】:2022-05-17 01:58:40
【问题描述】:
我有一个方法可以返回由两点定义的线段的中点;
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);
}
但情况似乎并非如此,我认为这是一个 c# 问题——只要你引入一个小数点(无论是 Point 还是 PointF),它就会把它的玩具扔出婴儿车并返回奇怪的东西结果。
所以我想问题是我将如何修改上述内容以使其满足我的需要?
提前致谢。
【问题讨论】:
-
试试 (P1.X*percentage + P2.X*(100 - percent))/100
-
这是票,非常感谢。
-
@user1006221 这不正确。只需在几个示例值上尝试一下,您就会发现它不正确。
-
我刚刚写了一个循环以 5% 的增量对其进行测试,它工作正常。
-
这里很好地解释了线性插值的确切公式:math.stackexchange.com/a/1918779