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

我想确定 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;

    }

我想在图形协调中使用。是我的问题吗?任何帮助将不胜感激。


下面是一个协调系统的例子,一个上升点和一个下降点,如下所示:

http://img1.mukewang.com/60bb1c0f0001af7c03040201.jpg

胡子哥哥
浏览 387回答 2
2回答

qq_遁去的一_1

您的公式几乎(您交换了 y1、y2)是正确的。重要的不是这个公式的结果,而是结果的符号。结果的准确性取决于数据的类型,首选double.这double&nbsp;d&nbsp;=&nbsp;(x&nbsp;-&nbsp;x1)&nbsp;*&nbsp;(y2&nbsp;-&nbsp;y1)&nbsp;-&nbsp;(y&nbsp;-&nbsp;y1)&nbsp;*&nbsp;(x2&nbsp;-&nbsp;x1);应该足够了……但是数字问题可能会产生错误的结果。更多关于在浮点什么每台计算机科学家应该知道浮点运算
打开App,查看更多内容
随时随地看视频慕课网APP