Program Listing for File orthogonal.hxx

Return to documentation for file (src/acme/orthogonal.hxx)

/*
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *                                                                     *
 * The ACME project                                                    *
 *                                                                     *
 * Copyright (c) 2020, Davide Stocco and Enrico Bertolazzi.            *
 *                                                                     *
 * The ACME project and its components are supplied under the terms of *
 * the open source BSD 2-Clause License. The contents of the ACME      *
 * project and its components may not be copied or disclosed except in *
 * accordance with the terms of the BSD 2-Clause License.              *
 *                                                                     *
 * URL: https://opensource.org/licenses/BSD-2-Clause                   *
 *                                                                     *
 *    Davide Stocco                                                    *
 *    Department of Industrial Engineering                             *
 *    University of Trento                                             *
 *    e-mail: davide.stocco@unitn.it                                   *
 *                                                                     *
 *    Enrico Bertolazzi                                                *
 *    Department of Industrial Engineering                             *
 *    University of Trento                                             *
 *    e-mail: enrico.bertolazzi@unitn.it                               *
 *                                                                     *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/


#pragma once
#ifndef INCLUDE_ACME_ORTHOGONAL_HXX
#define INCLUDE_ACME_ORTHOGONAL_HXX

#include "aabb.hxx"
#include "disk.hxx"
#include "line.hxx"
#include "parallel.hxx"
#include "plane.hxx"
#include "ray.hxx"
#include "segment.hxx"
#include "triangle.hxx"

namespace acme
{

  /*\
   |    ___       _   _                                   _
   |   / _ \ _ __| |_| |__   ___   __ _  ___  _ __   __ _| |
   |  | | | | '__| __| '_ \ / _ \ / _` |/ _ \| '_ \ / _` | |
   |  | |_| | |  | |_| | | | (_) | (_| | (_) | | | | (_| | |
   |   \___/|_|   \__|_| |_|\___/ \__, |\___/|_| |_|\__,_|_|
   |                              |___/
  \*/

  bool
  IsOrthogonal(
    entity const * entity0_in,
    entity const * entity1_in,
    real           tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    vec3 const & vector0_in,
    vec3 const & vector1_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    vec3 const & vector_in,
    line const & line_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    vec3 const & vector_in,
    ray  const & ray_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    vec3  const & vector_in,
    plane const & plane_in,
    real          tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    vec3    const & vector_in,
    segment const & segment_in,
    real            tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    vec3     const & vector_in,
    triangle const & triangle_in,
    real             tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    vec3 const & vector_in,
    disk const & disk_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    line const & line0_in,
    line const & line1_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    ray const & ray0_in,
    ray const & ray1_in,
    real        tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    plane const & plane0_in,
    plane const & plane1_in,
    real          tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    segment const & segment0_in,
    segment const & segment1_in,
    real            tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    triangle const & triangle0_in,
    triangle const & triangle1_in,
    real             tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    disk const & disk0_in,
    disk const & disk1_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    line const & line_in,
    ray  const & ray_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    line  const & line_in,
    plane const & plane_in,
    real          tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    line    const & line_in,
    segment const & segment_in,
    real            tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    line     const & line_in,
    triangle const & triangle_in,
    real             tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    line const & line_in,
    disk const & disk_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    ray   const & ray_in,
    plane const & plane_in,
    real          tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    ray     const & ray_in,
    segment const & segment_in,
    real            tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    ray      const & ray_in,
    triangle const & triangle_in,
    real             tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    ray  const & ray_in,
    disk const & disk_in,
    real         tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    plane   const & plane_in,
    segment const & segment_in,
    real            tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    plane    const & plane_in,
    triangle const & triangle_in,
    real             tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    plane const & plane_in,
    disk  const & disk_in,
    real          tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    segment  const & segment_in,
    triangle const & triangle_in,
    real             tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    segment const & segment_in,
    disk    const & disk_in,
    real            tolerance = EPSILON
  );

  bool
  IsOrthogonal(
    triangle const & triangle_in,
    disk     const & disk_in,
    real             tolerance = EPSILON
  );

} // namespace acme

#endif