github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/ui/src/util/vector.ts (about) 1 // Copyright 2018 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 export function distance(v1: [number, number], v2: [number, number]) { 12 return length(sub(v1, v2)); 13 } 14 15 export function length(v: [number, number]) { 16 return Math.sqrt(v[0] * v[0] + v[1] * v[1]); 17 } 18 19 export function add(v1: [number, number], v2: [number, number]): [number, number] { 20 return [v1[0] + v2[0], v1[1] + v2[1]]; 21 } 22 23 export function sub(v1: [number, number], v2: [number, number]): [number, number] { 24 return [v1[0] - v2[0], v1[1] - v2[1]]; 25 } 26 27 export function mult(v1: [number, number], scalar: number): [number, number] { 28 return [v1[0] * scalar, v1[1] * scalar]; 29 } 30 31 export function normalize(v: [number, number]): [number, number] { 32 const l = length(v); 33 if (l === 0) { 34 return [0, 0]; 35 } 36 return [v[0] / l, v[1] / l]; 37 } 38 39 export function invert(v: [number, number]): [number, number] { 40 return [v[1], -v[0]]; 41 } 42 43 export function reverse(v: [number, number]): [number, number] { 44 return [-v[0], -v[1]]; 45 } 46 47 export function dotprod(v1: [number, number], v2: [number, number]) { 48 return v1[0] * v2[0] + v1[1] * v2[1]; 49 }