为了账号安全,请及时绑定邮箱和手机立即绑定

如何确定点在C#中的一条线的上方或下方

如何确定点在C#中的一条线的上方或下方

C#
胡子哥哥 2021-06-04 11:14:40
我想确定 C# 中给定线的 Point 位置。我阅读了 这个链接和这个链接。我测试了它们,但似乎我的代码是错误的。对于某些接近(不是非常接近)的点,它会返回错误的值。这是我的代码:    public static PointToLineSituation WhereIsPoint(Line l, Point p)    {        var x = p.X;        var y = p.Y;        var x1 = l.X1;        var x2 = l.X2;        var y1 = l.Y1;        var y2 = l.Y2;        var d = (x - x1) * (y1 - y2) - (y - y1) * (x2 - x1);        if (d > 0)            return PointToLineSituation.Up;        if (d < 0)            return PointToLineSituation.Down;        return PointToLineSituation.OnLine;    }我想在图形协调中使用。是我的问题吗?任何帮助将不胜感激。下面是一个协调系统的例子,一个上升点和一个下降点,如下所示:
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

您的公式几乎(您交换了 y1、y2)是正确的。重要的不是这个公式的结果,而是结果的符号。

结果的准确性取决于数据的类型,首选double.


double d = (x - x1) * (y2 - y1) - (y - y1) * (x2 - x1);

应该足够了……但是数字问题可能会产生错误的结果。

更多关于在浮点什么每台计算机科学家应该知道浮点运算


查看完整回答
反对 回复 2021-06-05
  • 2 回答
  • 0 关注
  • 386 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信