[問題] 如何判斷點是否在線段上
各位大大晚安,小弟第一次在板上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上,但總覺得應該有更好
的方式,因為這樣我線段數一多的時候判斷式似乎就更加複雜了。
因為一旦第二個點連至第一個點或第一個點產生之線段之後,其第二個點或其線段也會
變成下一個點可連接之選擇。
敘述不佳的話還請各位大大見諒!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.12.120
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1470942120.A.36D.html
※ 編輯: RogerKao (114.42.12.120), 08/12/2016 03:03:45
→
08/12 10:35, , 1F
08/12 10:35, 1F
→
08/12 20:27, , 2F
08/12 20:27, 2F
→
08/12 23:06, , 3F
08/12 23:06, 3F
不太懂樓上的問題是什麼,我覺得我把問題在敘述清楚一點好了,
我整個問題是想要把很多點用直線連起來,想要連短的,但是不拘限於要點跟點直接連線
也就是我可以增加新的節點(Stenier point)
假設今天第一個點在(10,10) 他連到了(0,10)
那這個線段就是可連接的線段,也就是說現在新的點(7,6)的可連接選擇為
(10,10) 這個點或者是(0,10)到(10,10)這條線段。
因為我要求最短又是直線,所以人去看就是(7,6)直接往上連就結束了。
但假設我又有一個點是(12,8) 由於他X值比較大所以他可憐的最短距離應該是經由
中繼點(10,8)然後再連到(10,10)而不是去連 (0,10)到(10,10)這條線段。
所以我的問題是,我要怎麼判斷我下一個點是可以直接連線到原有點或線段
還是要會走L型去連到原有點或線段。
------------------------------x P1(10,10)
x P3(12,8)
x P2(7,6)
當然我已經知道我可以藉由判斷 x值是否在原有線段的範圍內 就如同一樓所說的
這樣我就可以直接連直線過去,我想知道的是有沒有其他方法去做判斷?
感謝各位熱心的回覆。
※ 編輯: RogerKao (114.42.12.120), 08/13/2016 00:18:32
→
08/13 17:52, , 4F
08/13 17:52, 4F
→
08/16 23:26, , 5F
08/16 23:26, 5F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章