35 lines
891 B
Java
35 lines
891 B
Java
var vec2 = require('../../util/index').vec2;
|
|
|
|
module.exports = {
|
|
at: function at(p1, p2, t) {
|
|
return (p2 - p1) * t + p1;
|
|
},
|
|
pointDistance: function pointDistance(x1, y1, x2, y2, x, y) {
|
|
var d = [x2 - x1, y2 - y1];
|
|
|
|
if (vec2.exactEquals(d, [0, 0])) {
|
|
return NaN;
|
|
}
|
|
|
|
var u = [-d[1], d[0]];
|
|
vec2.normalize(u, u);
|
|
var a = [x - x1, y - y1];
|
|
return Math.abs(vec2.dot(a, u));
|
|
},
|
|
box: function box(x1, y1, x2, y2, lineWidth) {
|
|
var halfWidth = lineWidth / 2;
|
|
var minX = Math.min(x1, x2);
|
|
var maxX = Math.max(x1, x2);
|
|
var minY = Math.min(y1, y2);
|
|
var maxY = Math.max(y1, y2);
|
|
return {
|
|
minX: minX - halfWidth,
|
|
minY: minY - halfWidth,
|
|
maxX: maxX + halfWidth,
|
|
maxY: maxY + halfWidth
|
|
};
|
|
},
|
|
len: function len(x1, y1, x2, y2) {
|
|
return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
|
|
}
|
|
}; |