wykobi_nd.hpp File Reference
#include <algorithm>
#include <cassert>
#include <limits>
#include <vector>
#include "wykobi.hpp"
#include "wykobi_math.hpp"
#include "wykobi_nd.inl"
Include dependency graph for wykobi_nd.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 wykobi
 

Functions

template<typename T , std::size_t D>
bool wykobi::parallel (const line< T, D > &line1, const line< T, D > &line2)
 
template<typename T , std::size_t D>
bool wykobi::parallel (const segment< T, D > &segment1, const segment< T, D > &segment2)
 
template<typename T , std::size_t D>
bool wykobi::perpendicular (const line< T, D > &line1, const line< T, D > &line2)
 
template<typename T , std::size_t D>
bool wykobi::perpendicular (const segment< T, D > &segment1, const segment< T, D > &segment2)
 
template<typename T , std::size_t D>
bool wykobi::collinear (const pointnd< T, D > &point1, const pointnd< T, D > &point2, const pointnd< T, D > &point3)
 
template<typename T , std::size_t D>
bool wykobi::robust_collinear (const pointnd< T, D > &point1, const pointnd< T, D > &point2, const pointnd< T, D > &point3)
 
template<typename T , std::size_t D>
bool wykobi::is_point_collinear (const segment< T, D > &segment, const pointnd< T, D > &point, const bool robust=false)
 
template<typename T , std::size_t D>
bool wykobi::intersect (const segment< T, D > &segment1, const segment< T, D > &segment2, const T &fuzzy=T(0.0))
 
template<typename T , std::size_t D>
bool wykobi::intersect (const line< T, D > &line1, const line< T, D > &line2, const T &fuzzy=T(0.0))
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::intersection_point (const segment< T, D > &segment1, const segment< T, D > &segment2, const T &fuzzy=T(0.0))
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::intersection_point (const line< T, D > &line1, const line< T, D > &line2, const T &fuzzy=T(0.0))
 
template<typename T , std::size_t D>
wykobi::distance (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
wykobi::distance (const pointnd< T, D > &point, const segment< T, D > &segment)
 
template<typename T , std::size_t D>
wykobi::distance (const pointnd< T, D > &point, const line< T, D > &line)
 
template<typename T , std::size_t D>
wykobi::distance (const segment< T, D > &segment1, const segment< T, D > &segment2)
 
template<typename T , std::size_t D>
wykobi::distance (const line< T, D > &line1, const line< T, D > &line2)
 
template<typename T , std::size_t D>
wykobi::lay_distance (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
wykobi::lay_distance (const pointnd< T, D > &point, const segment< T, D > &segment)
 
template<typename T , std::size_t D>
wykobi::lay_distance (const pointnd< T, D > &point, const line< T, D > &line)
 
template<typename T , std::size_t D>
wykobi::lay_distance (const segment< T, D > &segment1, const segment< T, D > &segment2)
 
template<typename T , std::size_t D>
wykobi::lay_distance (const line< T, D > &line1, const line< T, D > &line2)
 
template<typename T , std::size_t D>
wykobi::manhattan_distance (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
wykobi::chebyshev_distance (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
wykobi::inverse_chebyshev_distance (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
bool wykobi::point_in_box (const pointnd< T, D > &point, const box< T, D > &box)
 
template<typename T , std::size_t D>
bool wykobi::point_in_sphere (const pointnd< T, D > &point, const hypersphere< T, D > &hypersphere)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::closest_point_on_segment_from_point (const segment< T, D > &segment, const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::closest_point_on_line_from_point (const line< T, D > &segment, const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::closest_point_on_sphere_from_point (const hypersphere< T, D > &sphere, const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::closest_point_on_plane_from_point (const plane< T, D > &plane, const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::closest_point_on_box_from_point (const box< T, D > &box, const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::project_point_t (const pointnd< T, D > &source_point, const pointnd< T, D > &destination_point, const T &t)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::project_point (const pointnd< T, D > &source_point, const pointnd< T, D > &destination_point, const T &distance)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::mirror (const pointnd< T, D > &point, const line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::mirror (const segment< T, D > &segment, const line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
line< T, D > wykobi::mirror (const line< T, D > &line, const wykobi::line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
box< T, D > wykobi::mirror (const box< T, D > &box, const line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
triangle< T, D > wykobi::mirror (const triangle< T, D > &triangle, const line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
quadix< T, D > wykobi::mirror (const quadix< T, D > &quadix, const line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
hypersphere< T, D > wykobi::mirror (const hypersphere< T, D > &sphere, const line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
polygon< T, D > wykobi::mirror (const polygon< T, D > &polygon, const line< T, D > &mirror_axis)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::project_onto_axis (const pointnd< T, D > &point, const line< T, D > &axis)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::project_onto_axis (const triangle< T, D > &triangle, const line< T, D > &axis)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::project_onto_axis (const box< T, D > &box, const line< T, D > &axis)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::project_onto_axis (const quadix< T, D > &quadix, const line< T, D > &axis)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::project_onto_axis (const hypersphere< T, D > &sphere, const line< T, D > &axis)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::project_onto_axis (const polygon< T, D > &polygon, const line< T, D > &axis)
 
template<typename T , std::size_t D>
wykobi::perimeter (const triangle< T, D > &triangle)
 
template<typename T , std::size_t D>
wykobi::perimeter (const quadix< T, D > &quadix)
 
template<typename T , std::size_t D>
wykobi::perimeter (const polygon< T, D > &polygon)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::generate_random_point (const segment< T, D > &segment)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::generate_random_point (const triangle< T, D > &triangle)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::generate_random_point (const quadix< T, D > &quadix)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::generate_random_point (const box< T, D > &box)
 
template<typename T , std::size_t D, typename OutputIterator >
void wykobi::generate_random_points (const box< T, D > &box, const std::size_t &point_count, OutputIterator out)
 
template<typename T , std::size_t D, typename OutputIterator >
void wykobi::generate_random_points (const segment< T, D > &segment, const std::size_t &point_count, OutputIterator out)
 
template<typename T , std::size_t D, typename OutputIterator >
void wykobi::generate_random_points (const triangle< T, D > &triangle, const std::size_t &point_count, OutputIterator out)
 
template<typename T , std::size_t D, typename OutputIterator >
void wykobi::generate_random_points (const quadix< T, D > &quadix, const std::size_t &point_count, OutputIterator out)
 
template<typename T , std::size_t D>
wykobi::vector_norm (const vectornd< T, D > &v)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::normalize (const vectornd< T, D > &v)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::operator+ (const vectornd< T, D > &v1, const vectornd< T, D > &v2)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::operator- (const vectornd< T, D > &v1, const vectornd< T, D > &v2)
 
template<typename T , std::size_t D>
wykobi::dot_product (const vectornd< T, D > &v1, const vectornd< T, D > &v2)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::operator* (const vectornd< T, D > &v1, const T &scale)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::operator* (const T &scale, const vectornd< T, D > &v1)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::operator* (const pointnd< T, D > &point, const T &scale)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::operator* (const T &scale, const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::operator/ (const vectornd< T, D > &v1, const T &scale)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::operator/ (const pointnd< T, D > &point, const T &scale)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::operator+ (const pointnd< T, D > &point, const vectornd< T, D > &v)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::operator+ (const vectornd< T, D > &v, const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::operator- (const pointnd< T, D > &p1, const pointnd< T, D > &p2)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::operator+ (const pointnd< T, D > &p1, const pointnd< T, D > &p2)
 
template<typename T >
wykobi::operator* (const vectornd< T, 2 > &v1, const vectornd< T, 2 > &v2)
 
template<typename T >
vectornd< T, 3 > wykobi::operator* (const vectornd< T, 3 > &v1, const vectornd< T, 3 > &v2)
 
template<typename T , std::size_t D>
bool wykobi::operator< (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
bool wykobi::operator> (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
bool wykobi::operator== (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
bool wykobi::is_equal (const pointnd< T, D > &point1, const pointnd< T, D > &point2, const T &epsilon)
 
template<typename T , std::size_t D>
bool wykobi::is_equal (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
bool wykobi::not_equal (const pointnd< T, D > &point1, const pointnd< T, D > &point2, const T &epsilon)
 
template<typename T , std::size_t D>
bool wykobi::not_equal (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::degenerate_pointnd ()
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::degenerate_vectornd ()
 
template<typename T , std::size_t D>
ray< T, D > wykobi::degenerate_raynd ()
 
template<typename T , std::size_t D>
line< T, D > wykobi::degenerate_linend ()
 
template<typename T , std::size_t D>
segment< T, D > wykobi::degenerate_segmentnd ()
 
template<typename T , std::size_t D>
triangle< T, D > wykobi::degenerate_trianglend ()
 
template<typename T , std::size_t D>
quadix< T, D > wykobi::degenerate_quadixnd ()
 
template<typename T , std::size_t D>
box< T, D > wykobi::degenerate_box ()
 
template<typename T , std::size_t D>
hypersphere< T, D > wykobi::degenerate_hypersphere ()
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::positive_infinite_pointnd ()
 
template<typename T , std::size_t D>
pointnd< T, D > wykobi::negative_infinite_pointnd ()
 
template<typename T , std::size_t D>
void wykobi::swap (pointnd< T, D > &point1, pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
vectornd< T, D > wykobi::make_vector (const pointnd< T, D > &point)
 
template<typename T , std::size_t D>
ray< T, D > wykobi::make_ray (const pointnd< T, D > &origin, const vectornd< T, D > &direction)
 
template<typename T , std::size_t D>
segment< T, D > wykobi::make_segment (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
line< T, D > wykobi::make_line (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
box< T, D > wykobi::make_box (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
triangle< T, D > wykobi::make_triangle (const pointnd< T, D > &point1, const pointnd< T, D > &point2, const pointnd< T, D > &point3)
 
template<typename T , std::size_t D>
quadix< T, D > wykobi::make_quadix (const pointnd< T, D > &point1, const pointnd< T, D > &point2, const pointnd< T, D > &point3, const pointnd< T, D > &point4)
 
template<typename T , std::size_t D>
hypersphere< T, D > wykobi::make_sphere (const pointnd< T, D > &point, const T &radius)
 
template<typename T , std::size_t D>
hypersphere< T, D > wykobi::make_sphere (const pointnd< T, D > &point1, const pointnd< T, D > &point2)
 
template<typename T , std::size_t D>
polygon< T, D > wykobi::make_polygon (const std::vector< pointnd< T, D > > &point_list)
 
template<typename T , std::size_t D>
polygon< T, D > wykobi::make_polygon (const triangle< T, D > &triangle)
 
template<typename T , std::size_t D>
polygon< T, D > wykobi::make_polygon (const quadix< T, D > &quadix)