@logicflow/core
Version:
LogicFlow, help you quickly create flowcharts
51 lines (50 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.radianToAngle = exports.angleToRadian = exports.calculatePointAfterRotateAngle = exports.getNewCenter = void 0;
/**
* 根据两个点获取中心点坐标
*/
function getNewCenter(startPoint, endPoint) {
var x1 = startPoint.x, y1 = startPoint.y;
var x2 = endPoint.x, y2 = endPoint.y;
var newCenter = {
x: x1 + (x2 - x1) / 2,
y: y1 + (y2 - y1) / 2,
};
return newCenter;
}
exports.getNewCenter = getNewCenter;
/**
* 旋转矩阵公式,可以获取某一个坐标旋转angle后的坐标
* @param p 当前坐标
* @param center 旋转中心
* @param angle 旋转角度(不是弧度)
*/
function calculatePointAfterRotateAngle(p, center, angle) {
var radian = angleToRadian(angle);
var dx = p.x - center.x;
var dy = p.y - center.y;
var x = dx * Math.cos(radian) - dy * Math.sin(radian) + center.x;
var y = dx * Math.sin(radian) + dy * Math.cos(radian) + center.y;
return {
x: x,
y: y,
};
}
exports.calculatePointAfterRotateAngle = calculatePointAfterRotateAngle;
/**
* 角度转弧度
* @param angle 角度
*/
function angleToRadian(angle) {
return (angle * Math.PI) / 180;
}
exports.angleToRadian = angleToRadian;
/**
* 弧度转角度
* @param radian 弧度
*/
function radianToAngle(radian) {
return (radian / Math.PI) * 180;
}
exports.radianToAngle = radianToAngle;