dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
130 lines • 9.58 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function Point() { }
if (false) {
/** @type {?} */
Point.prototype.x;
/** @type {?} */
Point.prototype.y;
}
/**
* @param {?} x
* @param {?} y
* @param {?} m
* @param {?} n
* @param {?} r
* @return {?}
*/
export function pointInCicle(x, y, m, n, r) {
return distance(x, y, m, n) <= r;
}
/**
* @param {?} x1
* @param {?} y1
* @param {?} x2
* @param {?} y2
* @return {?}
*/
export function distance(x1, y1, x2, y2) {
/** @type {?} */
const a = x1 - x2;
/** @type {?} */
const b = y1 - y2;
return Math.sqrt(a * a + b * b);
}
/**
* 求二元一次方程的系数
* y1 = k * x1 + b => k = (y1 - b) / x1
* y2 = k * x2 + b => y2 = ((y1 - b) / x1) * x2 + b
* @param {?} x1
* @param {?} y1
* @param {?} x2
* @param {?} y2
* @return {?}
*/
export function binaryEquationGetKB(x1, y1, x2, y2) {
/** @type {?} */
const k = (y1 - y2) / (x1 - x2);
/** @type {?} */
const b = (x1 * y2 - x2 * y1) / (x1 - x2);
return [k, b];
}
/**
* 一元二次方程求根
* ax² + bx + c = 0
* @param {?} a
* @param {?} b
* @param {?} c
* @return {?}
*/
export function quadEquationGetX(a, b, c) {
/** @type {?} */
const xArr = [];
/** @type {?} */
const result = Math.pow(b, 2) - 4 * a * c;
if (result > 0) {
xArr.push((-b + Math.sqrt(result)) / (2 * a));
xArr.push((-b - Math.sqrt(result)) / (2 * a));
}
else if (result === 0) {
xArr.push(-b / (2 * a));
}
return xArr;
}
/**
* 求圆和直线之间的交点
* 直线方程:y = kx + b
* 圆的方程:(x - m)² + (x - n)² = r²
* x1, y1 = 线坐标1, x2, y2 = 线坐标2, m, n = 圆坐标, r = 半径
* @param {?} x1
* @param {?} y1
* @param {?} x2
* @param {?} y2
* @param {?} m
* @param {?} n
* @param {?} r
* @return {?}
*/
export function getInsertPointBetweenCircleAndLine(x1, y1, x2, y2, m, n, r) {
// 垂直的没有斜率,要特殊判断
if (x1 === x2) {
/** @type {?} */
const arr = [];
arr.push({ x: x1, y: n + r });
arr.push({ x: x1, y: n - r });
return arr;
}
// console.log(x1, y1, x2, y2, m, n, r)
/** @type {?} */
const kbArr = binaryEquationGetKB(x1, y1, x2, y2);
/** @type {?} */
const k = kbArr[0];
/** @type {?} */
const b = kbArr[1];
/** @type {?} */
const aX = 1 + k * k;
/** @type {?} */
const bX = 2 * k * (b - n) - 2 * m;
/** @type {?} */
const cX = m * m + (b - n) * (b - n) - r * r;
/** @type {?} */
const insertPoints = [];
/** @type {?} */
const xArr = quadEquationGetX(aX, bX, cX);
xArr.forEach((/**
* @param {?} x
* @return {?}
*/
x => {
/** @type {?} */
const y = k * x + b;
insertPoints.push({ x: x, y: y });
}));
return insertPoints;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cmljLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL3VzZXJpbmZvL3BvcnRyYWl0LWVkaXQvcG9ydHJhaXQtbWFzay9nZW9tZXRyaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLG9CQUdDOzs7SUFGQSxrQkFBVTs7SUFDVixrQkFBVTs7Ozs7Ozs7OztBQUVYLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVM7SUFDakYsT0FBTyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7Ozs7Ozs7O0FBQ0QsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVOztVQUNoRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7O1VBQ1gsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0lBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDOzs7Ozs7Ozs7OztBQU1ELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVOztVQUMzRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDOztVQUN6QixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDekMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNmLENBQUM7Ozs7Ozs7OztBQUtELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVM7O1VBQ3pELElBQUksR0FBRyxFQUFFOztVQUNULE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDekMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM5QztTQUFNLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDeEI7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNiLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU9ELE1BQU0sVUFBVSxrQ0FBa0MsQ0FDakQsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVLEVBQ1YsRUFBVSxFQUNWLENBQVMsRUFDVCxDQUFTLEVBQ1QsQ0FBUztJQUVULGdCQUFnQjtJQUNoQixJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7O2NBQ1IsR0FBRyxHQUFZLEVBQUU7UUFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsQ0FBQztLQUNYOzs7VUFFSyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDOztVQUMzQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzs7VUFDWixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzs7VUFFWixFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDOztVQUNkLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDOztVQUM1QixFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzs7VUFFdEMsWUFBWSxHQUFZLEVBQUU7O1VBQzFCLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN6QyxJQUFJLENBQUMsT0FBTzs7OztJQUFDLENBQUMsQ0FBQyxFQUFFOztjQUNWLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDbkIsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQyxFQUFDLENBQUM7SUFDSCxPQUFPLFlBQVksQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIFBvaW50IHtcclxuXHR4OiBudW1iZXI7XHJcblx0eTogbnVtYmVyO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBwb2ludEluQ2ljbGUoeDogbnVtYmVyLCB5OiBudW1iZXIsIG06IG51bWJlciwgbjogbnVtYmVyLCByOiBudW1iZXIpOiBib29sZWFuIHtcclxuXHRyZXR1cm4gZGlzdGFuY2UoeCwgeSwgbSwgbikgPD0gcjtcclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2UoeDE6IG51bWJlciwgeTE6IG51bWJlciwgeDI6IG51bWJlciwgeTI6IG51bWJlcik6IG51bWJlciB7XHJcblx0Y29uc3QgYSA9IHgxIC0geDI7XHJcblx0Y29uc3QgYiA9IHkxIC0geTI7XHJcblx0cmV0dXJuIE1hdGguc3FydChhICogYSArIGIgKiBiKTtcclxufVxyXG4vKipcclxuICog5rGC5LqM5YWD5LiA5qyh5pa556iL55qE57O75pWwXHJcbiAqIHkxID0gayAqIHgxICsgYiA9PiBrID0gKHkxIC0gYikgLyB4MVxyXG4gKiB5MiA9IGsgKiB4MiArIGIgPT4geTIgPSAoKHkxIC0gYikgLyB4MSkgKiB4MiArIGJcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBiaW5hcnlFcXVhdGlvbkdldEtCKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpIHtcclxuXHRjb25zdCBrID0gKHkxIC0geTIpIC8gKHgxIC0geDIpO1xyXG5cdGNvbnN0IGIgPSAoeDEgKiB5MiAtIHgyICogeTEpIC8gKHgxIC0geDIpO1xyXG5cdHJldHVybiBbaywgYl07XHJcbn1cclxuLyoqXHJcbiAqIOS4gOWFg+S6jOasoeaWueeoi+axguaguVxyXG4gKiBheMKyICsgYnggKyBjID0gMFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHF1YWRFcXVhdGlvbkdldFgoYTogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlcikge1xyXG5cdGNvbnN0IHhBcnIgPSBbXTtcclxuXHRjb25zdCByZXN1bHQgPSBNYXRoLnBvdyhiLCAyKSAtIDQgKiBhICogYztcclxuXHRpZiAocmVzdWx0ID4gMCkge1xyXG5cdFx0eEFyci5wdXNoKCgtYiArIE1hdGguc3FydChyZXN1bHQpKSAvICgyICogYSkpO1xyXG5cdFx0eEFyci5wdXNoKCgtYiAtIE1hdGguc3FydChyZXN1bHQpKSAvICgyICogYSkpO1xyXG5cdH0gZWxzZSBpZiAocmVzdWx0ID09PSAwKSB7XHJcblx0XHR4QXJyLnB1c2goLWIgLyAoMiAqIGEpKTtcclxuXHR9XHJcblx0cmV0dXJuIHhBcnI7XHJcbn1cclxuLyoqXHJcbiAqIOaxguWchuWSjOebtOe6v+S5i+mXtOeahOS6pOeCuVxyXG4gKiDnm7Tnur/mlrnnqIvvvJp5ID0ga3ggKyBiXHJcbiAqIOWchueahOaWueeoi++8mih4IC0gbSnCsiArICh4IC0gbinCsiA9IHLCslxyXG4gKiB4MSwgeTEgPSDnur/lnZDmoIcxLCB4MiwgeTIgPSDnur/lnZDmoIcyLCBtLCBuID0g5ZyG5Z2Q5qCHLCByID0g5Y2K5b6EXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5zZXJ0UG9pbnRCZXR3ZWVuQ2lyY2xlQW5kTGluZShcclxuXHR4MTogbnVtYmVyLFxyXG5cdHkxOiBudW1iZXIsXHJcblx0eDI6IG51bWJlcixcclxuXHR5MjogbnVtYmVyLFxyXG5cdG06IG51bWJlcixcclxuXHRuOiBudW1iZXIsXHJcblx0cjogbnVtYmVyXHJcbikge1xyXG5cdC8vIOWeguebtOeahOayoeacieaWnOeOh++8jOimgeeJueauiuWIpOaWrVxyXG5cdGlmICh4MSA9PT0geDIpIHtcclxuXHRcdGNvbnN0IGFycjogUG9pbnRbXSA9IFtdO1xyXG5cdFx0YXJyLnB1c2goeyB4OiB4MSwgeTogbiArIHIgfSk7XHJcblx0XHRhcnIucHVzaCh7IHg6IHgxLCB5OiBuIC0gciB9KTtcclxuXHRcdHJldHVybiBhcnI7XHJcblx0fVxyXG5cdC8vIGNvbnNvbGUubG9nKHgxLCB5MSwgeDIsIHkyLCBtLCBuLCByKVxyXG5cdGNvbnN0IGtiQXJyID0gYmluYXJ5RXF1YXRpb25HZXRLQih4MSwgeTEsIHgyLCB5Mik7XHJcblx0Y29uc3QgayA9IGtiQXJyWzBdO1xyXG5cdGNvbnN0IGIgPSBrYkFyclsxXTtcclxuXHJcblx0Y29uc3QgYVggPSAxICsgayAqIGs7XHJcblx0Y29uc3QgYlggPSAyICogayAqIChiIC0gbikgLSAyICogbTtcclxuXHRjb25zdCBjWCA9IG0gKiBtICsgKGIgLSBuKSAqIChiIC0gbikgLSByICogcjtcclxuXHJcblx0Y29uc3QgaW5zZXJ0UG9pbnRzOiBQb2ludFtdID0gW107XHJcblx0Y29uc3QgeEFyciA9IHF1YWRFcXVhdGlvbkdldFgoYVgsIGJYLCBjWCk7XHJcblx0eEFyci5mb3JFYWNoKHggPT4ge1xyXG5cdFx0Y29uc3QgeSA9IGsgKiB4ICsgYjtcclxuXHRcdGluc2VydFBvaW50cy5wdXNoKHsgeDogeCwgeTogeSB9KTtcclxuXHR9KTtcclxuXHRyZXR1cm4gaW5zZXJ0UG9pbnRzO1xyXG59XHJcbiJdfQ==