我想确定 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);
应该足够了……但是数字问题可能会产生错误的结果。
更多关于在浮点什么每台计算机科学家应该知道浮点运算
- 2 回答
- 0 关注
- 386 浏览
添加回答
举报
0/150
提交
取消