@3r/tool
Version:
🏃包含一些常用方法例如对象深克隆、递归调用、一一对比/数组交集、并集、差集/二维向量点乘、叉乘/股票KDJ、MACD、RSI、BOLL/验证为空、车牌号、邮箱、身份证、统一社会信用代码、手机号、版本对比/转换日期、星座、身份证解析、字节/随机颜色、手机号、身份证号码、统一社会信用代码...持续更新整合
75 lines (70 loc) • 3.54 kB
JavaScript
import { v2, Vector2 } from "../index.js";
let description = function () {
return ["#### Vertor2 二维向量", "包含一些与平面坐标系的方法.", "", "以下是相关示例:"];
};
let run = function () {
console.log("向量相加", v2(1, 1).plus(v2(2, 2)));
console.log("向量相减", v2(1, 1).subtract(v2(2, 2)));
console.log("向量相乘", v2(2, 3).multiply(v2(2, 2)));
console.log("向量相除", v2(2, 3).divide(v2(2, 2)));
console.log("叉乘", v2(2, 3).multiplicationCross(v2(2, 2)));
console.log("点乘", v2(2, 3).dotProduct(v2(2, 2)));
console.log("检测两线段是否交叉", Vector2.checkCross(v2(0, 1), v2(10, 1), v2(1, 0), v2(1, 10)));
console.log("检测p点是否在点p1,p2,p3组成的三角形内", Vector2.checkInTriangle(v2(0, 1), v2(0, 0), v2(2, 0), v2(0, 2)));
console.log("检测p点是否在点p1,p2,p3,p4组成的矩形内", Vector2.checkInRectangle(v2(0, 1), v2(0, 0), v2(1, 0), v2(1, 1), v2(0, 1)));
console.log("p点绕o点旋转angle°", Vector2.rotateAroundPoint(v2(1, 0), v2(0, 0), 90));
console.log("计算p1到p2两点之间的距离 保留3位小数", Vector2.distance(v2(0, 0), v2(1, 0)));
console.log("计算两直线的夹角角度", Vector2.includedAngle(v2(1, 0), v2(1, 1)));
console.log("在距离处获取点", Vector2.getPointAtDist(v2(0, 0), v2(-1, 0), 0.5));
};
try {
describe("Vertor2 二维向量模块", function () {
it("向量相加", function () {
expect(v2(1, 1).plus(v2(2, 2))).toEqual(new Vector2(3, 3));
});
it("向量相减", function () {
expect(v2(1, 1).subtract(v2(2, 2))).toEqual(new Vector2(-1, -1));
});
it("向量相乘", function () {
expect(v2(2, 3).multiply(v2(2, 2))).toEqual(new Vector2(4, 6));
});
it("向量相除", function () {
expect(v2(2, 3).divide(v2(2, 2))).toEqual(new Vector2(1, 1.5));
});
it("叉乘", function () {
expect(v2(2, 3).multiplicationCross(v2(2, 2))).toEqual(-2);
});
it("点乘", function () {
expect(v2(2, 3).dotProduct(v2(2, 2))).toEqual(10);
});
it("检测两线段是否交叉", function () {
expect(Vector2.checkCross(v2(0, 1), v2(10, 1), v2(1, 0), v2(1, 10))).toEqual(true);
});
it("检测p点是否在点p1,p2,p3组成的三角形内", function () {
expect(Vector2.checkInTriangle(v2(0, 1), v2(0, 0), v2(2, 0), v2(0, 2))).toEqual(true);
});
it("检测p点是否在点p1,p2,p3,p4组成的矩形内", function () {
expect(Vector2.checkInRectangle(v2(0, 1), v2(0, 0), v2(1, 0), v2(1, 1), v2(0, 1))).toEqual(true);
});
it("p点绕o点旋转angle°", function () {
expect(Vector2.rotateAroundPoint(v2(1, 0), v2(0, 0), 90)).toEqual(v2(0, -1));
});
it("计算p1到p2两点之间的距离 保留3位小数", function () {
expect(Vector2.distance(v2(0, 0), v2(1, 0))).toEqual(1);
});
it("计算两直线的夹角角度", function () {
expect(Vector2.includedAngle(v2(1, 0), v2(1, 1))).toEqual(45);
});
it("转换字符串", function () {
expect(v2(1, 1).toString()).toEqual("Vector2(1,1)");
});
it("在距离处获取点", function () {
expect(Vector2.getPointAtDist(v2(0, 0), v2(3, 4), 2.5)).toEqual(v2(1.5, 2));
expect(Vector2.getPointAtDist(v2(0, 0), v2(1, 0), 0.5)).toEqual(v2(0.5, 0));
expect(Vector2.getPointAtDist(v2(0, 0), v2(0, 1), 0.5)).toEqual(v2(0, 0.5));
});
});
} catch (error) {
// describe is not defined 无需理会 调用方式不一致
}
export { run, description };