All files geometry.js

100% Statements 58/58
100% Branches 4/4
100% Functions 4/4
100% Lines 58/58

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 592x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 4x 4x 4x 4x 4x 4x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x  
/**
 * @param {Point} point1 - target point
 * @param {Point} point2 - the other point
 * @returns {number} distance between `point1` and `point2`
 */
export const calculateDistanceBetween2Points = ({ x: x1, y: y1 }, { x: x2, y: y2 }) => Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
 
export const CircleInfo = {
  /**
   * @param {Rect} rect - bounding box to fill the disk
   * @param {number} innerRadiusPerc - The `Disk` inner circle radius percentage, or the hole radius percentage
   * @returns {Disk} built `Disk` object
   */
  fromRectWithPercentInnerRadius (rect, innerRadiusPerc) {
    const { x, y, width, height } = rect
    const radius = Math.min(width, height) / 2
    const innerRadius = (innerRadiusPerc * 0.01) * radius
    const center = { x: x + width / 2, y: y + height / 2 }
    return { innerRadiusPerc, radius, innerRadius, center }
  },
  /**
   * @param {Rect} rect - bounding box to fill the disk
   * @param {number} innerRadius - The `Disk` inner circle radius, or the hole radius
   * @returns {Disk} built `Disk` object
   */
  fromRectWithInnerRadius (rect, innerRadius) {
    const { x, y, width, height } = rect
    const radius = Math.min(width, height) / 2
    const innerRadiusPerc = innerRadius * 100 / radius
    const center = { x: x + width / 2, y: y + height / 2 }
    return { innerRadiusPerc, radius, innerRadius, center }
  },
}
 
/**
 * @typedef {object} Point
 * An object that represents a 2D point in a coordinate system
 * @property {number} x - the `x` coordinate of the `Point`
 * @property {number} y - the `y` coordinate of the `Point`
 */
 
/**
 * @typedef {object} Rect
 * An object that represents rectange
 * @property {number} x - The `x` coordinate of the `Rect`'s origin point (typically the top-left corner of the rectangle).
 * @property {number} y - The `y` coordinate of the `Rect`'s origin point (typically the top-left corner of the rectangle).
 * @property {number} width - The width of the `Rect`.
 * @property {number} height - The width of the `Rect`.
 */
 
/**
 * @typedef {object} Disk
 * An object that represents a circle with an hole in the center
 * @property {number} radius - The `Disk` outer circle radius
 * @property {Point} center - The coordinates of the `Disk` center
 * @property {number} innerRadius - The `Disk` inner circle radius, or the hole radius
 * @property {number} innerRadiusPerc - relative percentage of `innerRadius` compared to `radius`
 */