回答
好的,廢除我以前的答案,並使用線相交。從點開始直線測試。如果有交點,則點在下面,如果沒有,則該點在線的上方或側面。
爲了避免副案例(無雙關語),使用插值擴展原始線條。
這是一個可以做的功能line intersection。要做到原線的線性插值只需使用一些極端值:
var tx1 = x1 + (x2-x1) * -51000;
var ty1 = y1 + (y2-y1) * -51000;
var tx2 = x1 + (x2-x1) * 53200;
var ty2 = y1 + (y2-y1) * 53200;
更新今天早上我着急了一點,所以這裏是一個小更新。正如blindman67指出的那樣,如果鏈接相交函數中只有d
,並且檢查s
/t
(如果它們處於標準化範圍內(或者只是使用交叉積 - 請參閱他的回答,認爲它更合適))。
工程就像一個魅力:)謝謝 –
你只需要檢查在交叉線的d值功能。如果在線的左側,它將成爲負數(更好的解決方案就是做線和點的交叉乘積)。你也不需要添加極端值,如果你刪除了兩個界限檢查行截取函數if(s> = 0 && s <= 1)',另一個爲't',因爲這會給出截距該線不是線段。 – Blindman67
使用上部座標以創建一個形狀生成的三角形。例如,如果你的線路是這樣的:
你可以的,如果使用X2和Y1創建一個形狀:
現在簡單的三角形添加到路徑,並做了isPointInPath(x, y)
,如果它是真的,則在上面,如果它是假的,則在下面。
如果您需要檢查下面的相反過程。
(WOWA很多箭那裏......但你會得到的想法:)!)
邊緣的情況下(雙關語意):如果點是非常接近的一個結束 - >只是延長線條,或者使多邊形延伸(x1,y1)直到該區域的邊緣。實際上,考慮它:三角形可能不太合適,而是使用畫布的上邊緣作爲多邊形的一部分,然後下一個部分將是垂直線,直到對角線的末端,從對角線開始到畫布左上角的最後一段。我只是懶得重做的圖形,但你明白了......
謝謝K3N,它非常清楚!我不知道isPointInPath()函數,這肯定會有幫助!讓我試試這個對我的情況 –
喜歡箭頭:)) –
@SimonGuichard是的,它很有用。我添加了一個新的答案,但可能更合適。看看:) – K3N
使用點和線的叉積。
您需要將整個座標系移至行首,然後獲取行與點的叉積。如果結果是負數,則該點位於該線的左側,如果爲正則該點位於該線的右側,如果爲零,則該點位於該線上。
// the point
var px = 100;
var py = 100;
// the line
var lx1 = 20;
var ly1 = 20;
var lx2 = 320;
var ly2 = 120;
// move line end and point so that line start is at 0,0
lx2 -= lx1;
ly2 -= ly1;
px -= lx1;
py -= ly1;
// get cross product
var cross = lx2 * py - ly2 * px;
if(cross < 0){ // point is to the left (anticlockwise)
}else if(cross > 0){ // point is to the right (clockwise)
}else{ // cross must be zero then point is on the line
}
- 1. 如何在畫布上繪製2點之間的曲線?
- 2. 在上一個終點到下一個起點之間劃一條線
- 3. 查找點是否在一條線上
- 4. 確定一個點是否在斜邊上或靠近斜邊
- 5. 在地點點之間畫一條線
- 6. 如何找到一個點是否是使用PostgreSQL查詢的一條線的頂點之一
- 7. 確定一個點是否在一條線上的兩個其他點之間
- 8. 如何在兩點之間畫線?
- 9. 如何找到點之間是否存在這些點
- 10. 如何在一些線性佈局之間畫線?
- 11. 在點之間畫一條線
- 12. 如何確定一個點是在多邊形之上還是之下,而不是在多邊形之內?
- 13. 如何在畫布上查找線上點的列表android
- 14. 在兩個已知點之間畫線
- 15. 在兩個不同點之間畫線
- 16. 尾部斜線:是或否?
- 17. 在THREE.js畫布上的兩個選定的鼠標點擊點之間畫一條線
- 18. iPhone:如何在MapKit上的兩點之間畫線?
- 19. 如何找到兩個分佈曲線之間的關係
- 20. 如何在一條線上找到均勻分佈的點?
- 21. 如何比較畫線是否在2組數值之間
- 22. 根據是否點擊下一個或上一個按鈕更改動畫
- 23. 如何在畫布上的兩點之間畫一條直線與安卓手機
- 24. 如何在正斜槓之後獲得文本(直到下一個正斜槓或字符串結束)?
- 25. 在iPhone上的MapKit上找到兩個點之間的路徑/路線
- 26. JS在兩點或多點之間畫線
- 27. 如何畫點之間使用achart引擎之間的線android
- 28. 在等分線上找到一個點
- 29. 如何畫線(斜線)?
- 30. 尋找在Three.js球體上的兩個點之間畫線的方法
你到目前爲止嘗試過什麼? – element11
@simon guichard比較coordinates.can你從[如何確定二維三角形中的點?](http://jsfiddle.net/PerroAZUL/zdaY8/1/)顯示一個示例點和線 –
[小提琴] ://stackoverflow.com/questions/2049582/how-to-determine-a-point-in-a-2d-triangle) – destoryer