[英]How to deal with line segments in JavaScript, checking a point
我有以下代碼:
Object.defineProperty(LineSegment.prototype,'hasPoint',{ value:
function (point) {
if (typeof point != 'object' || !(point instanceof Point)) {
throw new TypeError('LineSegment.prototype.hasPoint requires a point value.'); }
var m = (this.y1 - this.y2) / (this.x1 - this.x2);
return (this.y1 - point.y) / (this.x1 - point.x) == m; }
});
它適用於線,但不適用於線段。 我如何檢查該點是否超出范圍,並將其應用於JavaScript?
僅當x1 <x2時才能使用最簡單,最快的答案。 在這種情況下,以下return語句:
return (this.y1 - point.y) / (this.x1 - point.x) == m && point.x >= this.x1 && point.x <= this.x2;
第一部分檢查點是否在直線上,接下來的兩個條件檢查x坐標是否在x1和x2(含)之間。
注意:如果x2 <x1,則只需在構造函數中添加一個條件即可交換兩點。 您也可以以p + q * v的形式更改該點(其中p是直線的第一個點,q是第二個和va標量值,僅當該點在直線上時才可行)。 如果v在0到1(含)之間,則該點在線段上。
編輯:只是警告,您的方法將不是很可靠,因為計算機處理加倍的方式。 有關某些示例,請參見Wikipedia頁面: http : //en.wikipedia.org/wiki/Double_precision
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.