Home Reference Source Repository

src/geometry/KdTree.js

/**
 * @fileOverview Helpers for k-d tree.
 * @author Jean-Philippe.Lambert@ircam.fr
 * @copyright 2015-2016 IRCAM, Paris, France
 * @license BSD-3-Clause
 */

import tree from 'kd.tree';
export { tree };

/**
 * Get the squared distance between to points.
 *
 * (Avoid computing the square-root when unnecessary.)
 *
 * @param {Object} a in cartesian coordinates.
 * @param {Number} a.x
 * @param {Number} a.y
 * @param {Number} a.z
 * @param {Object} b in cartesian coordinates.
 * @param {Number} b.x
 * @param {Number} b.y
 * @param {Number} b.z
 * @returns {Number}
 */
export function distanceSquared(a, b) {
  const x = b.x - a.x;
  const y = b.y - a.y;
  const z = b.z - a.z;
  return x * x + y * y + z * z;
}

/**
 * Get the distance between to points.
 *
 * @param {Object} a in cartesian coordinates.
 * @param {Number} a.x
 * @param {Number} a.y
 * @param {Number} a.z
 * @param {Object} b in cartesian coordinates.
 * @param {Number} b.x
 * @param {Number} b.y
 * @param {Number} b.z
 * @returns {Number}
 */
export function distance(a, b) {
  return Math.sqrt(this.distanceSquared(a, b) );
}

export default {
  distance,
  distanceSquared,
  tree,
};