20#ifndef INCLUDE_WYKOBI_ND 21#define INCLUDE_WYKOBI_ND 32template <
typename T, std::
size_t D>
35template <
typename T, std::
size_t D>
39template <
typename T, std::
size_t D>
42template <
typename T, std::
size_t D>
46template <
typename T, std::
size_t D>
50template <
typename T, std::
size_t D>
55template <
typename T, std::
size_t D>
58 const bool robust =
false);
60template <
typename T, std::
size_t D>
64template <
typename T, std::
size_t D>
66 const T& fuzzy = T(0.0));
68template <
typename T, std::
size_t D>
71 const T& fuzzy = T(0.0));
73template <
typename T, std::
size_t D>
76 const T& fuzzy = T(0.0));
78template <
typename T, std::
size_t D>
81template <
typename T, std::
size_t D>
84template <
typename T, std::
size_t D>
87template <
typename T, std::
size_t D>
90template <
typename T, std::
size_t D>
93template <
typename T, std::
size_t D>
96template <
typename T, std::
size_t D>
99template <
typename T, std::
size_t D>
102template <
typename T, std::
size_t D>
106template <
typename T, std::
size_t D>
109template <
typename T, std::
size_t D>
113template <
typename T, std::
size_t D>
117template <
typename T, std::
size_t D>
121template <
typename T, std::
size_t D>
125template <
typename T, std::
size_t D>
128template <
typename T, std::
size_t D>
132template <
typename T, std::
size_t D>
136template <
typename T, std::
size_t D>
140template <
typename T, std::
size_t D>
144template <
typename T, std::
size_t D>
148template <
typename T, std::
size_t D>
152template <
typename T, std::
size_t D>
157template <
typename T, std::
size_t D>
162template <
typename T, std::
size_t D>
166template <
typename T, std::
size_t D>
170template <
typename T, std::
size_t D>
174template <
typename T, std::
size_t D>
177template <
typename T, std::
size_t D>
181template <
typename T, std::
size_t D>
185template <
typename T, std::
size_t D>
189template <
typename T, std::
size_t D>
193template <
typename T, std::
size_t D>
197template <
typename T, std::
size_t D>
201template <
typename T, std::
size_t D>
205template <
typename T, std::
size_t D>
209template <
typename T, std::
size_t D>
213template <
typename T, std::
size_t D>
217template <
typename T, std::
size_t D>
220template <
typename T, std::
size_t D>
223template <
typename T, std::
size_t D>
226template <
typename T, std::
size_t D>
229template <
typename T, std::
size_t D>
232template <
typename T, std::
size_t D>
235template <
typename T, std::
size_t D>
238template <
typename T, std::
size_t D,
typename OutputIterator>
240 const std::size_t& point_count,
243template <
typename T, std::
size_t D,
typename OutputIterator>
245 const std::size_t& point_count,
248template <
typename T, std::
size_t D,
typename OutputIterator>
250 const std::size_t& point_count,
253template <
typename T, std::
size_t D,
typename OutputIterator>
255 const std::size_t& point_count,
258template <
typename T, std::
size_t D>
261template <
typename T, std::
size_t D>
264template <
typename T, std::
size_t D>
268template <
typename T, std::
size_t D>
272template <
typename T, std::
size_t D>
275template <
typename T, std::
size_t D>
278template <
typename T, std::
size_t D>
281template <
typename T, std::
size_t D>
284template <
typename T, std::
size_t D>
287template <
typename T, std::
size_t D>
290template <
typename T, std::
size_t D>
293template <
typename T, std::
size_t D>
297template <
typename T, std::
size_t D>
301template <
typename T, std::
size_t D>
305template <
typename T, std::
size_t D>
316template <
typename T, std::
size_t D>
319template <
typename T, std::
size_t D>
322template <
typename T, std::
size_t D>
326template <
typename T, std::
size_t D>
330template <
typename T, std::
size_t D>
333template <
typename T, std::
size_t D>
337template <
typename T, std::
size_t D>
340template <
typename T, std::
size_t D>
343template <
typename T, std::
size_t D>
346template <
typename T, std::
size_t D>
349template <
typename T, std::
size_t D>
352template <
typename T, std::
size_t D>
355template <
typename T, std::
size_t D>
358template <
typename T, std::
size_t D>
361template <
typename T, std::
size_t D>
364template <
typename T, std::
size_t D>
367template <
typename T, std::
size_t D>
370template <
typename T, std::
size_t D>
373template <
typename T, std::
size_t D>
376template <
typename T, std::
size_t D>
379template <
typename T, std::
size_t D>
383template <
typename T, std::
size_t D>
387template <
typename T, std::
size_t D>
391template <
typename T, std::
size_t D>
395template <
typename T, std::
size_t D>
400template <
typename T, std::
size_t D>
406template <
typename T, std::
size_t D>
410template <
typename T, std::
size_t D>
414template <
typename T, std::
size_t D>
418template <
typename T, std::
size_t D>
421template <
typename T, std::
size_t D>
426#include "wykobi_nd.inl" Definition wykobi.hpp:702
Definition wykobi.hpp:440
Definition wykobi.hpp:287
Definition wykobi.hpp:688
Definition wykobi.hpp:166
Definition wykobi.hpp:383
Definition wykobi.hpp:359
Definition wykobi.hpp:674
Definition wykobi.hpp:263
Definition wykobi.hpp:433
Definition wykobi.hpp:311
Definition wykobi.hpp:614
T manhattan_distance(const T &x1, const T &y1, const T &x2, const T &y2)
T vector_norm(const vector2d< T > &v)
sphere< T > make_sphere(const T &x, const T &y, const T &z, const T &radius)
vector2d< T > normalize(const vector2d< T > &v)
quadix< T, 2 > make_quadix(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
void swap(point2d< T > &point1, point2d< T > &point2)
bool is_point_collinear(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, const bool robust=false)
void project_point(const T &srcx, const T &srcy, const T &destx, const T &desty, const T &dist, T &nx, T &ny)
bool parallel(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &epsilon=T(Epsilon))
bool perpendicular(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &epsilon=T(Epsilon))
bool intersect(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
bool operator<(const point2d< T > &point1, const point2d< T > &point2)
bool is_equal(const T &val1, const T &val2, const T &epsilon)
vectornd< T, D > degenerate_vectornd()
bool collinear(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &epsilon=T(Epsilon))
box< T, D > degenerate_box()
pointnd< T, D > negative_infinite_pointnd()
point2d< T > generate_random_point(const T &dx, const T &dy)
ray< T, 2 > make_ray(const T &ox, const T &oy, const T &dir_x, const T &dir_y)
T perimeter(const point2d< T > &point1, const point2d< T > &point2, const point2d< T > &point3)
ray< T, D > degenerate_raynd()
void project_point_t(const T &srcx, const T &srcy, const T &destx, const T &desty, const T &t, T &nx, T &ny)
bool operator>(const point2d< T > &point1, const point2d< T > &point2)
void closest_point_on_line_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
vector2d< T > operator+(const vector2d< T > &v1, const vector2d< T > &v2)
hypersphere< T, D > degenerate_hypersphere()
segment< T, 2 > project_onto_axis(const point2d< T > &point, const line< T, 2 > &axis)
void closest_point_on_box_from_point(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &px, const T &py, const T &pz, T &nx, T &ny, T &nz)
bool robust_collinear(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &epsilon=T(Epsilon))
void closest_point_on_segment_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
bool not_equal(const T &val1, const T &val2, const T &epsilon)
T chebyshev_distance(const T &x1, const T &y1, const T &x2, const T &y2)
box< T, 3 > make_box(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2)
quadix< T, D > degenerate_quadixnd()
bool point_in_sphere(const T &px, const T &py, const T &pz, const T &cx, const T &cy, const T &cz, const T &radius)
T lay_distance(const T &x1, const T &y1, const T &x2, const T &y2)
void intersection_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, T &ix, T &iy)
point3d< T > closest_point_on_sphere_from_point(const sphere< T > &sphere, const point3d< T > &point)
triangle< T, D > degenerate_trianglend()
vector2d< T > operator-(const vector2d< T > &v1, const vector2d< T > &v2)
void generate_random_points(const T &x1, const T &y1, const T &x2, const T &y2, const std::size_t &point_count, OutputIterator out)
T operator*(const vector2d< T > &v1, const vector2d< T > &v2)
point3d< T > closest_point_on_plane_from_point(const plane< T, 3 > &plane, const point3d< T > &point)
segment< T, 2 > make_segment(const T &x1, const T &y1, const T &x2, const T &y2)
bool operator==(const point2d< T > &point1, const point2d< T > &point2)
point2d< T > scale(const T &dx, const T &dy, const point2d< T > &point)
void mirror(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, T &nx, T &ny)
line< T, 2 > make_line(const T &x1, const T &y1, const T &x2, const T &y2)
triangle< T, 2 > make_triangle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
segment< T, D > degenerate_segmentnd()
T dot_product(const vector2d< T > &v1, const vector2d< T > &v2)
vector2d< T > operator/(const vector2d< T > &v1, const T &scale)
pointnd< T, D > positive_infinite_pointnd()
bool point_in_box(const T &px, const T &py, const T &pz, const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2)
line< T, D > degenerate_linend()
polygon< T, D > make_polygon(const InputIterator begin, const InputIterator end)
T inverse_chebyshev_distance(const T &x1, const T &y1, const T &x2, const T &y2)
T distance(const T &x1, const T &y1, const T &x2, const T &y2)
pointnd< T, D > degenerate_pointnd()
vector2d< T > make_vector(const T &x, const T &y)