NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g/lib/shapes/math/line.js
2023-09-14 14:47:11 +08:00

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));
}
};