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  }