@3r/tool
Version:
🏃包含一些常用方法例如对象深克隆、递归调用、一一对比/数组交集、并集、差集/二维向量点乘、叉乘/股票KDJ、MACD、RSI、BOLL/验证为空、车牌号、邮箱、身份证、统一社会信用代码、手机号、版本对比/转换日期、星座、身份证解析、字节/随机颜色、手机号、身份证号码、统一社会信用代码...持续更新整合
1 lines • 1.77 kB
JavaScript
import{Maths as a}from"./maths.js";class c{constructor(t,s){this.x=0,this.y=0,this.x=t,this.y=s}plus(t){return o(this.x+t.x,this.y+t.y)}subtract(t){return o(this.x-t.x,this.y-t.y)}multiply(t){return o(this.x*t.x,this.y*t.y)}divide(t){return o(this.x/t.x,this.y/t.y)}multiplicationCross(t){return this.x*t.y-this.y*t.x}dotProduct(t){return this.x*t.x+this.y*t.y}static checkCross(t,s,r,i){var a=t.subtract(r),c=s.subtract(r),o=i.subtract(r),s=s.subtract(t),r=r.subtract(t),i=i.subtract(t);return a.multiplicationCross(o)*c.multiplicationCross(o)<=0&&s.multiplicationCross(r)*s.multiplicationCross(i)<=0}static checkInTriangle(t,s,r,i){s=s.subtract(t),r=r.subtract(t),i=i.subtract(t),t=s.multiplicationCross(r),r=r.multiplicationCross(i),i=i.multiplicationCross(s);return a.sameSign(t,r)&&a.sameSign(r,i)}static checkInRectangle(t,s,r,i){var a=r.subtract(s),s=t.subtract(s),i=i.subtract(r),t=t.subtract(r),r=a.dotProduct(s),s=a.dotProduct(a),a=i.dotProduct(t),t=i.dotProduct(i);return 0<=r&&r<=s&&0<=a&&a<=t}static rotateAroundPoint(t,s,r){t=t.subtract(s),s=+Math.cos(Math.PI/180*r).toFixed(3),r=+Math.sin(Math.PI/180*r).toFixed(3);return o(t.x*s+t.y*r,t.y*s-t.x*r)}static distance(t,s){return+Math.sqrt(Math.pow(s.y-t.y,2)+Math.pow(s.x-t.x,2)).toFixed(3)}static includedAngle(t,s){return+(Math.sign(t.multiplicationCross(s))*Math.acos((t.x*s.x+t.y*s.y)/(Math.sqrt(Math.pow(t.x,2)+Math.pow(t.y,2))*Math.sqrt(Math.pow(s.x,2)+Math.pow(s.y,2))))*180/Math.PI).toFixed(3)}static getPointAtDist(t,s,r){var i,a;return t.x===s.x?o(t.x,t.y+Math.sign(s.y-t.y)*r):t.y===s.y?o(t.x+Math.sign(s.x-t.x)*r,t.y):(i=s.x-t.x,a=s.y-t.y,o(r/(s=c.distance(t,s))*i+t.x,r/s*a+t.y))}toString(){return`Vector2(${this.x},${this.y})`}}function o(t,s){return new c(t,s)}export{c as Vector2,o as v2};