UNPKG

@visactor/vrender-components

Version:

components library for dp visualization

27 lines (21 loc) 911 B
import { crossProduct } from "@visactor/vutils"; export function scale(vector, scale) { return [ vector[0] * scale, vector[1] * scale ]; } export function length(vector) { const [x, y] = vector; return Math.sqrt(x * x + y * y); } export function normalize(vector) { let len = length(vector); return len > 0 && (len = 1 / len), [ vector[0] * len, vector[1] * len ]; } export function angle(vector1, vector2) { const [x1, y1] = vector1, [x2, y2] = vector2, mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2)), cosine = mag && (x1 * x2 + y1 * y2) / mag; return Math.acos(Math.min(Math.max(cosine, -1), 1)); } export function angleTo(v1, v2, direct) { const ang = angle(v1, v2), angleLargeThanPI = crossProduct(v1, v2) >= 0; return direct ? angleLargeThanPI ? 2 * Math.PI - ang : ang : angleLargeThanPI ? ang : 2 * Math.PI - ang; } //# sourceMappingURL=matrix.js.map