[問題] 如何判斷點是否在線段上

作者: RogerKao (RK)   2016-08-12 03:01:56
各位大大晚安,小弟第一次在板上PO文,如有冒犯還請見諒。
小弟有一問題相問:
問題是關於直線段連線的問題,以下所有線段、連線都是rectilinear的
假設目前已知存在某線段(即知其頭尾座標)
例如(0,10)->(10,10),其中(10,10)為可連接之端點
接著我有一點(7,6),想求此點連線到該線段或是該端點的最短距離
就會有兩個連法,第一個連法就是直接垂直往上連到(7,10)
第二個連法就是往右邊畫線到(10,6)再往上連到(10,10),而產生兩段線段。
當然我可以直接看出(7,6)->(7,10)走的距離比較短。
但我怎麼判斷走到(7,10)之後,線段不會再往右邊連到(10,10)?
也就是我如何判斷我的中繼點已經在已知線段上,而不再繼續連線?
我是有想到一個方法就是判斷欲連接點(7,6)之X值是否在第一線段之X值範圍內
即 0 <= 7 <= 10,若是則可直接垂直連至線段Y=10上,但總覺得應該有更好
的方式,因為這樣我線段數一多的時候判斷式似乎就更加複雜了。
因為一旦第二個點連至第一個點或第一個點產生之線段之後,其第二個點或其線段也會
變成下一個點可連接之選擇。
敘述不佳的話還請各位大大見諒!
作者: Litfal (Litfal)   2016-08-12 10:35:00
x0<=x && x<=x1 && y0<=y && y<=y1
作者: RogerKao (RK)   2016-08-12 20:27:00
感謝樓上回答,這我剛有想到,不知道是否還有其他方法?
作者: MOONY135 (談無慾)   2016-08-12 23:06:00
你的到線段跟到端點距離是想要怎樣取捨?
作者: RogerKao (RK)   2016-08-16 23:26:00
感謝樓上大大熱心解答!

Links booklink

Contact Us: admin [ a t ] ucptt.com