c# - 获取沿线段一定百分比的点

标签 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);
}

但情况似乎并非如此,我认为这是一个 c# 问题 - 一旦你引入小数点(无论是 Point 还是 PointF),它就会把它的玩具从婴儿车里扔出去并返回奇怪的结果。

所以我想问题是我将如何修改以上内容以使其执行我需要的操作?

提前致谢。

最佳答案

您使用了错误的公式。

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

关于c# - 获取沿线段一定百分比的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27237169/

相关文章:

Python:检查(并计算多少)点位于 voronoi 单元格内的位置

shell - 从 ansible 运行 sed 命令

Excel VBA 导出到文本文件。需要删除空行

c# - 无法将类型 'System.DateTimeOffset?' 隐式转换为 'System.DateTimeOffset' 。显式转换退出(是否缺少强制转换)

c# - 从开始菜单链接的 ClickOnce 开始时间

c# - 在 CodeDOM 中保留成员的序列化顺序

Postgresql 几何线 - 找到 Y 截距

geometry - 如何将 4D 坐标转换/投影为 3D 坐标

c# - 使用 Outlook.com SMTP 发送电子邮件

linux - 使用 grep 获取行号