我想確定 C# 中給定線的 Point 位置。我閱讀了 這個鏈接和這個鏈接。我測試了它們,但似乎我的代碼是錯誤的。對于某些接近(不是非常接近)的點(diǎn),它會返回錯誤的值。這是我的代碼: 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; }我想在圖形協(xié)調(diào)中使用。是我的問題嗎?任何幫助將不勝感激。下面是一個協(xié)調(diào)系統(tǒng)的例子,一個上升點(diǎn)和一個下降點(diǎn),如下所示:
2 回答

qq_遁去的一_1
TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個贊
您的公式幾乎(您交換了 y1、y2)是正確的。重要的不是這個公式的結(jié)果,而是結(jié)果的符號。
結(jié)果的準(zhǔn)確性取決于數(shù)據(jù)的類型,首選double
.
這
double d = (x - x1) * (y2 - y1) - (y - y1) * (x2 - x1);
應(yīng)該足夠了……但是數(shù)字問題可能會產(chǎn)生錯誤的結(jié)果。
更多關(guān)于在浮點(diǎn)什么每臺計算機(jī)科學(xué)家應(yīng)該知道浮點(diǎn)運(yùn)算
- 2 回答
- 0 關(guān)注
- 416 瀏覽
添加回答
舉報
0/150
提交
取消