20 #ifndef INCLUDE_WYKOBI_INSTANTIATE 21 #define INCLUDE_WYKOBI_INSTANTIATE 29 #define INSTANTIATE_WYKOBI(T, InputIterator2d, InputIterator3d, \ 30 OutputIterator2d, OutputIterator3d) \ 31 template int orientation<T>(const T& x1, const T& y1, const T& x2, \ 32 const T& y2, const T& px, const T& py); \ 33 template int orientation<T>(const T& x1, const T& y1, const T& z1, \ 34 const T& x2, const T& y2, const T& z2, \ 35 const T& x3, const T& y3, const T& z3, \ 36 const T& px, const T& py, const T& pz); \ 37 template int robust_orientation<T>(const T& x1, const T& y1, const T& x2, \ 38 const T& y2, const T& px, const T& py); \ 39 template int robust_orientation<T>(const T& x1, const T& y1, const T& z1, \ 40 const T& x2, const T& y2, const T& z2, \ 41 const T& x3, const T& y3, const T& z3, \ 42 const T& px, const T& py, const T& pz); \ 43 template int orientation<T>(const point2d<T>& point1, \ 44 const point2d<T>& point2, const T& px, \ 46 template int orientation<T>(const point2d<T>& point1, \ 47 const point2d<T>& point2, \ 48 const point2d<T>& point3); \ 49 template int orientation<T>(const line<T, 2>& line, \ 50 const point2d<T>& point); \ 51 template int orientation<T>(const segment<T, 2>& segment, \ 52 const point2d<T>& point); \ 53 template int orientation<T>(const triangle<T, 2>& triangle); \ 54 template int orientation<T>( \ 55 const point3d<T>& point1, const point3d<T>& point2, \ 56 const point3d<T>& point3, const T& px, const T& py, const T& pz); \ 57 template int orientation<T>( \ 58 const point3d<T>& point1, const point3d<T>& point2, \ 59 const point3d<T>& point3, const point3d<T>& point4); \ 60 template int orientation<T>(const triangle<T, 3>& triangle, \ 61 const point3d<T>& point); \ 62 template bool differing_orientation<T>( \ 63 const T& x1, const T& y1, const T& x2, const T& y2, const T& p1x, \ 64 const T& p1y, const T& p2x, const T& p2y); \ 65 template bool differing_orientation<T>( \ 66 const point2d<T>& p1, const point2d<T>& p2, const point2d<T>& q1, \ 67 const point2d<T>& q2); \ 68 template int in_circle<T>(const T& x1, const T& y1, const T& x2, \ 69 const T& y2, const T& x3, const T& y3, \ 70 const T& px, const T& py); \ 71 template int in_circle<T>( \ 72 const point2d<T>& point1, const point2d<T>& point2, \ 73 const point2d<T>& point3, const point2d<T>& point4); \ 74 template int in_circle<T>(const triangle<T, 2>& triangle, \ 75 const point2d<T>& point); \ 76 template int in_sphere<T>( \ 77 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 78 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 79 const T& y4, const T& z4, const T& px, const T& py, const T& pz); \ 80 template int in_sphere<T>( \ 81 const point3d<T>& point1, const point3d<T>& point2, \ 82 const point3d<T>& point3, const point3d<T>& point4, \ 83 const point3d<T>& point5); \ 84 template int in_sphere<T>(const quadix<T, 3>& quadix, \ 85 const point3d<T>& point); \ 86 template T signed_area<T>(const T& x1, const T& y1, const T& x2, \ 87 const T& y2, const T& px, const T& py); \ 88 template T signed_area<T>(const point2d<T>& point1, \ 89 const point2d<T>& point2, const T& px, \ 91 template T signed_area<T>(const point2d<T>& point1, \ 92 const point2d<T>& point2, \ 93 const point2d<T>& point3); \ 94 template T signed_area<T>(const segment<T, 2>& segment, \ 95 const point2d<T>& point); \ 96 template T signed_volume<T>(const T& x1, const T& y1, const T& z1, \ 97 const T& x2, const T& y2, const T& z2, \ 98 const T& x3, const T& y3, const T& z3, \ 99 const T& px, const T& py, const T& pz); \ 100 template T signed_volume<T>( \ 101 const point3d<T>& point1, const point3d<T>& point2, \ 102 const point3d<T>& point3, const T& px, const T& py, const T& pz); \ 103 template T signed_volume<T>( \ 104 const point3d<T>& point1, const point3d<T>& point2, \ 105 const point3d<T>& point3, const point3d<T>& point4); \ 106 template T signed_volume<T>(const triangle<T, 3>& triangle, \ 107 const point3d<T>& point); \ 108 template bool collinear<T>(const T& x1, const T& y1, const T& x2, \ 109 const T& y2, const T& x3, const T& y3, \ 111 template bool collinear<T>( \ 112 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 113 const T& z2, const T& x3, const T& y3, const T& z3, const T& epsilon); \ 114 template bool collinear<T>(const point2d<T>& point1, \ 115 const point2d<T>& point2, \ 116 const point2d<T>& point3); \ 117 template bool collinear<T>(const point3d<T>& point1, \ 118 const point3d<T>& point2, \ 119 const point3d<T>& point3); \ 120 template bool robust_collinear<T>(const T& x1, const T& y1, const T& x2, \ 121 const T& y2, const T& x3, const T& y3, \ 123 template bool robust_collinear<T>( \ 124 const point2d<T>& point1, const point2d<T>& point2, \ 125 const point2d<T>& point3, const T& epsilon); \ 126 template bool robust_collinear<T>( \ 127 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 128 const T& z2, const T& x3, const T& y3, const T& z3, const T& epsilon); \ 129 template bool robust_collinear<T>( \ 130 const point3d<T>& point1, const point3d<T>& point2, \ 131 const point3d<T>& point3, const T& epsilon); \ 132 template bool robust_collinear<T>( \ 133 const line<T, 2>& line, const point2d<T>& point, const T& epsilon); \ 134 template bool robust_collinear<T>( \ 135 const line<T, 3>& line, const point3d<T>& point, const T& epsilon); \ 136 template bool is_point_collinear<T>(const T& x1, const T& y1, const T& x2, \ 137 const T& y2, const T& px, const T& py, \ 138 const bool robust); \ 139 template bool is_point_collinear<T>( \ 140 const point2d<T>& point1, const point2d<T>& point2, \ 141 const point2d<T>& point3, const bool robust); \ 142 template bool is_point_collinear<T>(const point2d<T>& point1, \ 143 const point2d<T>& point2, const T& px, \ 144 const T& py, const bool robust); \ 145 template bool is_point_collinear<T>(const segment<T, 2>& segment, \ 146 const point2d<T>& point, \ 147 const bool robust); \ 148 template bool is_point_collinear<T>( \ 149 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 150 const T& z2, const T& px, const T& py, const T& pz, const bool robust); \ 151 template bool is_point_collinear<T>( \ 152 const point3d<T>& point1, const point3d<T>& point2, \ 153 const point3d<T>& point3, const bool robust); \ 154 template bool is_point_collinear<T>(const segment<T, 3>& segment, \ 155 const point3d<T>& point, \ 156 const bool robust); \ 157 template bool robust_coplanar<T>( \ 158 const point3d<T> point1, const point3d<T> point2, \ 159 const point3d<T> point3, const point3d<T> point4, const T& epsilon); \ 160 template bool coplanar<T>(const ray<T, 3>& ray1, const ray<T, 3>& ray2); \ 161 template bool coplanar<T>(const segment<T, 3>& segment1, \ 162 const segment<T, 3>& segment2); \ 163 template bool coplanar<T>(const line<T, 3>& line1, const line<T, 3>& line2); \ 164 template bool coplanar<T>(const triangle<T, 3>& triangle1, \ 165 const triangle<T, 3>& triangle2); \ 166 template bool coplanar<T>(const quadix<T, 3>& quadix1, \ 167 const quadix<T, 3>& quadix2); \ 168 template bool cocircular<T>(const T& x1, const T& y1, const T& x2, \ 169 const T& y2, const T& x3, const T& y3, \ 170 const T& x4, const T& y4, const T& epsilon); \ 171 template bool cocircular<T>( \ 172 const point2d<T>& point1, const point2d<T>& point2, \ 173 const point2d<T>& point3, const point2d<T>& point4, const T& epsilon); \ 174 template bool cocircular<T>(const triangle<T, 2>& triangle, \ 175 const point2d<T>& point, const T& epsilon); \ 176 template bool cocircular<T>(const circle<T>& circle, \ 177 const point2d<T>& point, const T& epsilon); \ 178 template bool is_skinny_triangle<T>(const T& x1, const T& y1, const T& x2, \ 179 const T& y2, const T& x3, const T& y3); \ 180 template bool is_skinny_triangle<T>(const point2d<T>& point1, \ 181 const point2d<T>& point2, \ 182 const point2d<T>& point3); \ 183 template bool is_skinny_triangle<T>(const triangle<T, 2>& triangle); \ 184 template bool intersect<T>(const T& x1, const T& y1, const T& x2, \ 185 const T& y2, const T& x3, const T& y3, \ 186 const T& x4, const T& y4); \ 187 template bool intersect<T>(const T& x1, const T& y1, const T& x2, \ 188 const T& y2, const T& x3, const T& y3, \ 189 const T& x4, const T& y4, T& ix, T& iy); \ 190 template bool intersect<T>( \ 191 const point2d<T>& point1, const point2d<T>& point2, \ 192 const point2d<T>& point3, const point2d<T>& point4); \ 193 template bool intersect<T>(const point2d<T>& point1, \ 194 const point2d<T>& point2, \ 195 const point2d<T>& point3, \ 196 const point2d<T>& point4, point2d<T>& int_point); \ 197 template bool intersect<T>(const segment<T, 2>& segment1, \ 198 const segment<T, 2>& segment2); \ 199 template bool intersect<T>(const segment<T, 2>& segment1, \ 200 const segment<T, 2>& segment2, T& ix, T& iy); \ 201 template bool intersect<T>(const segment<T, 2>& segment1, \ 202 const segment<T, 2>& segment2, \ 203 point2d<T>& i_point); \ 204 template bool intersect<T>( \ 205 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 206 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 207 const T& y4, const T& z4, const T& fuzzy); \ 208 template bool intersect<T>( \ 209 const point3d<T>& point1, const point3d<T>& point2, \ 210 const point3d<T>& point3, const point3d<T>& point4, const T& fuzzy); \ 211 template bool intersect<T>(const segment<T, 3>& segment1, \ 212 const segment<T, 3>& segment2, const T& fuzzy); \ 213 template bool intersect<T>(const segment<T, 2>& segment, \ 214 const rectangle<T>& rectangle); \ 215 template bool intersect<T>(const segment<T, 2>& segment, \ 216 const triangle<T, 2>& triangle); \ 217 template bool intersect<T>(const segment<T, 2>& segment, \ 218 const quadix<T, 2>& quadix); \ 219 template bool intersect<T>(const segment<T, 2>& segment, \ 220 const line<T, 2>& line); \ 221 template bool intersect<T>(const segment<T, 2>& segment, \ 222 const circle<T>& circle); \ 223 template bool intersect<T>(const segment<T, 2>& segment, \ 224 const quadratic_bezier<T, 2>& bezier, \ 225 const std::size_t& steps); \ 226 template bool intersect<T>(const segment<T, 2>& segment, \ 227 const cubic_bezier<T, 2>& bezier, \ 228 const std::size_t& steps); \ 229 template bool intersect<T>(const segment<T, 3>& segment, \ 230 const line<T, 3>& line, const T& fuzzy); \ 231 template bool intersect<T>(const segment<T, 3>& segment, \ 232 const box<T, 3>& box); \ 233 template bool intersect<T>(const segment<T, 3>& segment, \ 234 const sphere<T>& sphere); \ 235 template bool intersect<T>(const segment<T, 3>& segment, \ 236 const plane<T, 3>& plane); \ 237 template bool intersect<T>(const segment<T, 3>& segment, \ 238 const quadratic_bezier<T, 3>& bezier, \ 239 const std::size_t& steps); \ 240 template bool intersect<T>(const segment<T, 3>& segment, \ 241 const cubic_bezier<T, 3>& bezier, \ 242 const std::size_t& steps); \ 243 template bool intersect<T>(const line<T, 2>& line, \ 244 const triangle<T, 2>& triangle); \ 245 template bool intersect<T>(const line<T, 2>& line, \ 246 const quadix<T, 2>& quadix); \ 247 template bool intersect<T>(const line<T, 2>& line1, \ 248 const line<T, 2>& line2); \ 249 template bool intersect<T>(const line<T, 2>& line, const circle<T>& circle); \ 250 template bool intersect<T>(const line<T, 2>& line, \ 251 const quadratic_bezier<T, 2>& bezier, \ 252 const std::size_t& steps); \ 253 template bool intersect<T>(const line<T, 2>& line, \ 254 const cubic_bezier<T, 2>& bezier, \ 255 const std::size_t& steps); \ 256 template bool intersect<T>(const line<T, 3>& line, \ 257 const triangle<T, 3>& triangle); \ 258 template bool intersect<T>(const line<T, 3>& line, \ 259 const plane<T, 3>& plane); \ 260 template bool intersect<T>(const line<T, 3>& line, const sphere<T>& sphere); \ 261 template bool intersect<T>(const line<T, 3>& line, \ 262 const quadratic_bezier<T, 3>& bezier, \ 263 const std::size_t& steps); \ 264 template bool intersect<T>(const line<T, 3>& line, \ 265 const cubic_bezier<T, 3>& bezier, \ 266 const std::size_t& steps); \ 267 template bool intersect<T>(const triangle<T, 2>& triangle1, \ 268 const triangle<T, 2>& triangle2); \ 269 template bool intersect<T>(const triangle<T, 2>& triangle, \ 270 const circle<T>& circle); \ 271 template bool intersect<T>(const triangle<T, 2>& triangle, \ 272 const rectangle<T>& rectangle); \ 273 template bool intersect<T>(const triangle<T, 2>& triangle, \ 274 const quadratic_bezier<T, 2>& bezier, \ 275 const std::size_t& steps); \ 276 template bool intersect<T>(const triangle<T, 2>& triangle, \ 277 const cubic_bezier<T, 2>& bezier, \ 278 const std::size_t& steps); \ 279 template bool intersect<T>(const rectangle<T>& rectangle1, \ 280 const rectangle<T>& rectangle2); \ 281 template bool intersect<T>(const rectangle<T>& rectangle, \ 282 const quadratic_bezier<T, 2>& bezier, \ 283 const std::size_t& steps); \ 284 template bool intersect<T>(const rectangle<T>& rectangle, \ 285 const cubic_bezier<T, 2>& bezier, \ 286 const std::size_t& steps); \ 287 template bool intersect<T>(const rectangle<T>& rectangle, \ 288 const circle<T>& circle); \ 289 template bool intersect<T>(const quadix<T, 2>& quadix, \ 290 const quadratic_bezier<T, 2>& bezier, \ 291 const std::size_t& steps); \ 292 template bool intersect<T>(const quadix<T, 2>& quadix, \ 293 const cubic_bezier<T, 2>& bezier, \ 294 const std::size_t& steps); \ 295 template bool intersect<T>(const circle<T>& circle1, \ 296 const circle<T>& circle2); \ 297 template bool intersect<T>(const circle<T>& circle, \ 298 const quadratic_bezier<T, 2>& bezier, \ 299 const std::size_t& steps); \ 300 template bool intersect<T>(const circle<T>& circle, \ 301 const cubic_bezier<T, 2>& bezier, \ 302 const std::size_t& steps); \ 303 template bool intersect<T>(const box<T, 3>& box, const sphere<T>& sphere); \ 304 template bool intersect<T>(const sphere<T>& sphere1, \ 305 const sphere<T>& sphere2); \ 306 template bool intersect<T>(const sphere<T>& sphere, \ 307 const quadratic_bezier<T, 3>& bezier, \ 308 const std::size_t& steps); \ 309 template bool intersect<T>(const sphere<T>& sphere, \ 310 const cubic_bezier<T, 3>& bezier, \ 311 const std::size_t& steps); \ 312 template bool intersect<T>(const ray<T, 2>& ray1, const ray<T, 2>& ray2); \ 313 template bool intersect<T>(const ray<T, 3>& ray1, const ray<T, 3>& ray2); \ 314 template bool intersect<T>(const ray<T, 2>& ray, \ 315 const segment<T, 2>& segment); \ 316 template bool intersect<T>(const ray<T, 3>& ray, \ 317 const segment<T, 3>& segment); \ 318 template bool intersect<T>(const ray<T, 2>& ray, \ 319 const rectangle<T>& rectangle); \ 320 template bool intersect<T>(const ray<T, 3>& ray, const box<T, 3>& box); \ 321 template bool intersect<T>(const ray<T, 2>& ray, \ 322 const triangle<T, 2>& triangle); \ 323 template bool intersect<T>(const ray<T, 3>& ray, \ 324 const triangle<T, 3>& triangle); \ 325 template bool intersect<T>(const ray<T, 2>& ray, \ 326 const quadix<T, 2>& quadix); \ 327 template bool intersect<T>(const ray<T, 2>& ray, const circle<T>& circle); \ 328 template bool intersect<T>(const ray<T, 3>& ray, const sphere<T>& sphere); \ 329 template bool intersect<T>(const ray<T, 3>& ray, const plane<T, 3>& plane); \ 330 template bool intersect<T>(const ray<T, 2>& ray, \ 331 const polygon<T, 2>& polygon); \ 332 template bool intersect<T>(const plane<T, 3>& plane1, \ 333 const plane<T, 3>& plane2); \ 334 template bool intersect<T>(const plane<T, 3>& plane, \ 335 const sphere<T>& sphere); \ 336 template bool intersect<T>(const plane<T, 3>& plane, \ 337 const line<T, 3>& line); \ 338 template bool simple_intersect<T>(const T& x1, const T& y1, const T& x2, \ 339 const T& y2, const T& x3, const T& y3, \ 340 const T& x4, const T& y4); \ 341 template bool simple_intersect<T>( \ 342 const point2d<T>& point1, const point2d<T>& point2, \ 343 const point2d<T>& point3, const point2d<T>& point4); \ 344 template bool simple_intersect<T>(const segment<T, 2>& segment1, \ 345 const segment<T, 2>& segment2); \ 346 template bool intersect_vertical_horizontal<T>( \ 347 const segment<T, 2>& segment1, const segment<T, 2>& segment2); \ 348 template bool intersect_vertical_vertical<T>(const segment<T, 2>& segment1, \ 349 const segment<T, 2>& segment2); \ 350 template bool intersect_horizontal_horizontal<T>( \ 351 const segment<T, 2>& segment1, const segment<T, 2>& segment2); \ 352 template void intersection_point<T>(const T& x1, const T& y1, const T& x2, \ 353 const T& y2, const T& x3, const T& y3, \ 354 const T& x4, const T& y4, T& ix, T& iy); \ 355 template void intersection_point<T>( \ 356 const point2d<T>& point1, const point2d<T>& point2, \ 357 const point2d<T>& point3, const point2d<T>& point4, T& ix, T& iy); \ 358 template point2d<T> intersection_point<T>( \ 359 const point2d<T>& point1, const point2d<T>& point2, \ 360 const point2d<T>& point3, const point2d<T>& point4); \ 361 template point2d<T> intersection_point<T>(const segment<T, 2>& segment1, \ 362 const segment<T, 2>& segment2); \ 363 template void intersection_point<T>( \ 364 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 365 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 366 const T& y4, const T& z4, T& ix, T& iy, T& iz, const T& fuzzy); \ 367 template void intersection_point<T>( \ 368 const point3d<T>& point1, const point3d<T>& point2, \ 369 const point3d<T>& point3, const point3d<T>& point4, T& ix, T& iy, T& iz, \ 371 template point3d<T> intersection_point<T>( \ 372 const point3d<T>& point1, const point3d<T>& point2, \ 373 const point3d<T>& point3, const point3d<T>& point4, const T& fuzzy); \ 374 template point3d<T> intersection_point<T>(const segment<T, 3>& segment1, \ 375 const segment<T, 3>& segment2, \ 377 template point2d<T> intersection_point<T>(const segment<T, 2>& segment, \ 378 const line<T, 2>& line); \ 379 template point3d<T> intersection_point<T>( \ 380 const segment<T, 3>& segment, const line<T, 3>& line, const T& fuzzy); \ 381 template point3d<T> intersection_point<T>(const segment<T, 3>& segment, \ 382 const plane<T, 3>& plane); \ 383 template void intersection_point<T, OutputIterator3d>( \ 384 const segment<T, 3>& segment, const sphere<T>& sphere, \ 385 OutputIterator3d out); \ 386 template void intersection_point<T, OutputIterator2d>( \ 387 const segment<T, 2>& segment, const quadratic_bezier<T, 2>& bezier, \ 388 OutputIterator2d out, const std::size_t& steps); \ 389 template void intersection_point<T, OutputIterator2d>( \ 390 const segment<T, 2>& segment, const cubic_bezier<T, 2>& bezier, \ 391 OutputIterator2d out, const std::size_t& steps); \ 392 template point2d<T> intersection_point<T>(const line<T, 2>& line1, \ 393 const line<T, 2>& line2); \ 394 template point3d<T> intersection_point<T>( \ 395 const line<T, 3>& line1, const line<T, 3>& line2, const T& fuzzy); \ 396 template void intersection_point<T>(const circle<T>& circle1, \ 397 const circle<T>& circle2, \ 398 point2d<T>& point1, point2d<T>& point2); \ 399 template void intersection_point<T, OutputIterator2d>( \ 400 const segment<T, 2>& segment, const triangle<T, 2>& triangle, \ 401 OutputIterator2d out); \ 402 template void intersection_point<T>(const line<T, 3>& line, \ 403 const triangle<T, 3>& triangle, \ 404 point3d<T>& ipoint); \ 405 template point3d<T> intersection_point<T>(const line<T, 3>& line, \ 406 const plane<T, 3>& plane); \ 407 template void intersection_point<T, OutputIterator2d>( \ 408 const T& x1, const T& y1, const T& x2, const T& y2, const T& cx, \ 409 const T& cy, const T& radius, OutputIterator2d out); \ 410 template void intersection_point<T, OutputIterator2d>( \ 411 const segment<T, 2>& segment, const circle<T>& circle, \ 412 OutputIterator2d out); \ 413 template void intersection_point<T, OutputIterator2d>( \ 414 const line<T, 2>& line, const circle<T>& circle, OutputIterator2d out); \ 415 template void intersection_point<T, OutputIterator3d>( \ 416 const line<T, 3>& line, const sphere<T>& sphere, OutputIterator3d out); \ 417 template point2d<T> intersection_point<T>(const ray<T, 2>& ray1, \ 418 const ray<T, 2>& ray2); \ 419 template point3d<T> intersection_point<T>(const ray<T, 3>& ray, \ 420 const triangle<T, 3>& triangle); \ 421 template point3d<T> intersection_point<T>(const ray<T, 3>& ray, \ 422 const plane<T, 3>& plane); \ 423 template void intersection_point<T, OutputIterator2d>( \ 424 const ray<T, 2>& ray, const circle<T>& circle, OutputIterator2d out); \ 425 template void intersection_point<T, OutputIterator3d>( \ 426 const ray<T, 3>& ray, const sphere<T>& sphere, OutputIterator3d out); \ 427 template void intersection_point_line_to_line<T>( \ 428 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 429 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 430 const T& y4, const T& z4, T& ix, T& iy, T& iz, const T& fuzzy); \ 431 template T normalize_angle<T>(const T& angle); \ 432 template T vertical_mirror<T>(const T& angle); \ 433 template T horizontal_mirror<T>(const T& angle); \ 434 template unsigned int quadrant<T>(const T& angle); \ 435 template unsigned int quadrant<T>(const T& x, const T& y); \ 436 template unsigned int quadrant<T>(const point2d<T>& point); \ 437 template T vertex_angle<T>(const T& x1, const T& y1, const T& x2, \ 438 const T& y2, const T& x3, const T& y3); \ 439 template T vertex_angle<T>(const point2d<T>& point1, \ 440 const point2d<T>& point2, \ 441 const point2d<T>& point3); \ 442 template T vertex_angle<T>(const T& x1, const T& y1, const T& z1, \ 443 const T& x2, const T& y2, const T& z2, \ 444 const T& x3, const T& y3, const T& z3); \ 445 template T vertex_angle<T>(const point3d<T>& point1, \ 446 const point3d<T>& point2, \ 447 const point3d<T>& point3); \ 448 template T oriented_vertex_angle<T>(const T& x1, const T& y1, const T& x2, \ 449 const T& y2, const T& x3, const T& y3, \ 451 template T oriented_vertex_angle<T>( \ 452 const point2d<T>& point1, const point2d<T>& point2, \ 453 const point2d<T>& point3, const int orient); \ 454 template T cartesian_angle<T>(const T& x, const T& y); \ 455 template T cartesian_angle<T>(const point2d<T>& point); \ 456 template T robust_cartesian_angle<T>(const T& x, const T& y); \ 457 template T robust_cartesian_angle<T>(const point2d<T>& point); \ 458 template T cartesian_angle<T>(const T& x, const T& y, const T& ox, \ 460 template T cartesian_angle<T>(const point2d<T>& point, \ 461 const point2d<T>& origin); \ 462 template T robust_cartesian_angle<T>(const T& x, const T& y, const T& ox, \ 464 template T robust_cartesian_angle<T>(const point2d<T>& point, \ 465 const point2d<T>& origin); \ 466 template bool parallel<T>(const T& x1, const T& y1, const T& x2, \ 467 const T& y2, const T& x3, const T& y3, \ 468 const T& x4, const T& y4, const T& epsilon); \ 469 template bool parallel<T>( \ 470 const point2d<T>& point1, const point2d<T>& point2, \ 471 const point2d<T>& point3, const point2d<T>& point4, const T& epsilon); \ 472 template bool parallel<T>(const segment<T, 2>& segment1, \ 473 const segment<T, 2>& segment2, const T& epsilon); \ 474 template bool parallel<T>(const line<T, 2>& line1, const line<T, 2>& line2, \ 476 template bool parallel<T>( \ 477 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 478 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 479 const T& y4, const T& z4, const T& epsilon); \ 480 template bool parallel<T>( \ 481 const point3d<T>& point1, const point3d<T>& point2, \ 482 const point3d<T>& point3, const point3d<T>& point4, const T& epsilon); \ 483 template bool parallel<T>(const segment<T, 3>& segment1, \ 484 const segment<T, 3>& segment2, const T& epsilon); \ 485 template bool parallel<T>(const line<T, 3>& line1, const line<T, 3>& line2, \ 487 template bool robust_parallel<T>( \ 488 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 489 const T& y3, const T& x4, const T& y4, const T& epsilon); \ 490 template bool robust_parallel<T>( \ 491 const point2d<T>& point1, const point2d<T>& point2, \ 492 const point2d<T>& point3, const point2d<T>& point4, const T& epsilon); \ 493 template bool robust_parallel<T>(const segment<T, 2>& segment1, \ 494 const segment<T, 2>& segment2, \ 496 template bool robust_parallel<T>(const line<T, 2>& line1, \ 497 const line<T, 2>& line2, const T& epsilon); \ 498 template bool robust_parallel<T>( \ 499 const line<T, 2>& line, const segment<T, 2>& segment, const T& epsilon); \ 500 template bool robust_parallel<T>( \ 501 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 502 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 503 const T& y4, const T& z4, const T& epsilon); \ 504 template bool robust_parallel<T>( \ 505 const point3d<T>& point1, const point3d<T>& point2, \ 506 const point3d<T>& point3, const point3d<T>& point4, const T& epsilon); \ 507 template bool robust_parallel<T>(const segment<T, 3>& segment1, \ 508 const segment<T, 3>& segment2, \ 510 template bool robust_parallel<T>(const line<T, 3>& line1, \ 511 const line<T, 3>& line2, const T& epsilon); \ 512 template bool robust_parallel<T>( \ 513 const line<T, 3>& line, const segment<T, 3>& segment, const T& epsilon); \ 514 template bool perpendicular<T>(const T& x1, const T& y1, const T& x2, \ 515 const T& y2, const T& x3, const T& y3, \ 516 const T& x4, const T& y4, const T& epsilon); \ 517 template bool perpendicular<T>( \ 518 const point2d<T>& point1, const point2d<T>& point2, \ 519 const point2d<T>& point3, const point2d<T>& point4, const T& epsilon); \ 520 template bool perpendicular<T>(const segment<T, 2>& segment1, \ 521 const segment<T, 2>& segment2, \ 523 template bool perpendicular<T>(const line<T, 2>& line1, \ 524 const line<T, 2>& line2, const T& epsilon); \ 525 template bool perpendicular<T>( \ 526 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 527 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 528 const T& y4, const T& z4, const T& epsilon); \ 529 template bool perpendicular<T>( \ 530 const point3d<T>& point1, const point3d<T>& point2, \ 531 const point3d<T>& point3, const point3d<T>& point4, const T& epsilon); \ 532 template bool perpendicular<T>(const segment<T, 3>& segment1, \ 533 const segment<T, 3>& segment2, \ 535 template bool perpendicular<T>(const line<T, 3>& line1, \ 536 const line<T, 3>& line2, const T& epsilon); \ 537 template bool perpendicular<T>( \ 538 const line<T, 2>& line, const segment<T, 2>& segment, const T& epsilon); \ 539 template bool robust_perpendicular<T>( \ 540 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 541 const T& y3, const T& x4, const T& y4, const T& epsilon); \ 542 template bool robust_perpendicular<T>( \ 543 const point2d<T>& point1, const point2d<T>& point2, \ 544 const point2d<T>& point3, const point2d<T>& point4, const T& epsilon); \ 545 template bool robust_perpendicular<T>(const segment<T, 2>& segment1, \ 546 const segment<T, 2>& segment2, \ 548 template bool robust_perpendicular<T>( \ 549 const line<T, 2>& line1, const line<T, 2>& line2, const T& epsilon); \ 550 template bool robust_perpendicular<T>( \ 551 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 552 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 553 const T& y4, const T& z4, const T& epsilon); \ 554 template bool robust_perpendicular<T>( \ 555 const point3d<T>& point1, const point3d<T>& point2, \ 556 const point3d<T>& point3, const point3d<T>& point4, const T& epsilon); \ 557 template bool robust_perpendicular<T>(const segment<T, 3>& segment1, \ 558 const segment<T, 3>& segment2, \ 560 template bool robust_perpendicular<T>( \ 561 const line<T, 3>& line1, const line<T, 3>& line2, const T& epsilon); \ 562 template bool robust_perpendicular<T>( \ 563 const line<T, 2>& line, const segment<T, 2>& segment, const T& epsilon); \ 564 template bool line_to_line_intersect<T>( \ 565 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 566 const T& y3, const T& x4, const T& y4); \ 567 template bool line_to_line_intersect<T>(const line<T, 2>& line1, \ 568 const line<T, 2>& line2); \ 569 template bool rectangle_to_rectangle_intersect<T>( \ 570 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 571 const T& y3, const T& x4, const T& y4); \ 572 template bool rectangle_to_rectangle_intersect<T>( \ 573 const rectangle<T>& rectangle1, const rectangle<T>& rectangle2); \ 574 template bool box_to_box_intersect<T>( \ 575 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 576 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 577 const T& y4, const T& z4); \ 578 template bool box_to_box_intersect<T>(const box<T, 3>& box1, \ 579 const box<T, 3>& box2); \ 580 template bool rectangle_within_rectangle<T>( \ 581 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 582 const T& y3, const T& x4, const T& y4); \ 583 template bool rectangle_within_rectangle<T>(const rectangle<T>& rectangle1, \ 584 const rectangle<T>& rectangle2); \ 585 template bool box_within_box<T>(const T& x1, const T& y1, const T& z1, \ 586 const T& x2, const T& y2, const T& z2, \ 587 const T& x3, const T& y3, const T& z3, \ 588 const T& x4, const T& y4, const T& z4); \ 589 template bool box_within_box<T>(const box<T, 3>& box1, \ 590 const box<T, 3>& box2); \ 591 template bool circle_within_rectangle<T>( \ 592 const T& x, const T& y, const T& radius, const T& x1, const T& y1, \ 593 const T& x2, const T& y2); \ 594 template bool circle_within_rectangle<T>(const circle<T>& circle, \ 595 const rectangle<T>& rectangle); \ 596 template bool triangle_within_rectangle<T>( \ 597 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 598 const T& y3, const T& x4, const T& y4, const T& x5, const T& y5); \ 599 template bool triangle_within_rectangle<T>(const triangle<T, 2>& triangle, \ 600 const rectangle<T>& rectangle); \ 601 template bool segment_within_rectangle<T>( \ 602 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 603 const T& y3, const T& x4, const T& y4); \ 604 template bool segment_within_rectangle<T>(const segment<T, 2>& segment, \ 605 const rectangle<T>& rectangle); \ 606 template bool quadix_within_rectangle<T>( \ 607 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 608 const T& y3, const T& x4, const T& y4, const T& x5, const T& y5, \ 609 const T& x6, const T& y6); \ 610 template bool quadix_within_rectangle<T>(const quadix<T, 2>& quadix, \ 611 const rectangle<T>& rectangle); \ 612 template bool polygon_within_rectangle<T>(const polygon<T, 2>& polygon, \ 613 const rectangle<T>& rectangle); \ 614 template bool sphere_within_box<T>( \ 615 const T& x, const T& y, const T& z, const T& radius, const T& x1, \ 616 const T& y1, const T& z1, const T& x2, const T& y2, const T& z2); \ 617 template bool sphere_within_box<T>(const sphere<T>& sphere, \ 618 const box<T, 3>& box); \ 619 template bool triangle_within_box<T>( \ 620 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 621 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 622 const T& y4, const T& z4, const T& x5, const T& y5, const T& z5); \ 623 template bool triangle_within_box<T>(const triangle<T, 3>& triangle, \ 624 const box<T, 3>& box); \ 625 template bool segment_within_box<T>(const T& x1, const T& y1, const T& z1, \ 626 const T& x2, const T& y2, const T& z2, \ 627 const T& x3, const T& y3, const T& z3, \ 628 const T& x4, const T& y4, const T& z4); \ 629 template bool segment_within_box<T>(const segment<T, 3>& segment, \ 630 const box<T, 3>& box); \ 631 template bool quadix_within_box<T>( \ 632 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 633 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 634 const T& y4, const T& z4, const T& x5, const T& y5, const T& z5, \ 635 const T& x6, const T& y6, const T& z6); \ 636 template bool quadix_within_box<T>(const quadix<T, 3>& quadix, \ 637 const box<T, 3>& box); \ 638 template bool polygon_within_box<T>(const polygon<T, 3>& polygon, \ 639 const box<T, 3>& box); \ 640 template bool circle_in_circle<T>(const circle<T>& circle1, \ 641 const circle<T>& circle2); \ 642 template bool is_tangent<T>(const segment<T, 2>& segment, \ 643 const circle<T>& circle); \ 644 template bool point_of_reflection<T>( \ 645 const T& sx1, const T& sy1, const T& sx2, const T& sy2, const T& p1x, \ 646 const T& p1y, const T& p2x, const T& p2y, T& rpx, T& rpy); \ 647 template bool point_of_reflection<T>( \ 648 const segment<T, 2>& segment, const point2d<T>& point1, \ 649 const point2d<T>& point2, point2d<T>& reflection_point); \ 650 template segment<T, 2> edge<T>(const triangle<T, 2>& triangle, \ 651 const std::size_t& edge_index); \ 652 template segment<T, 3> edge<T>(const triangle<T, 3>& triangle, \ 653 const std::size_t& edge_index); \ 654 template segment<T, 2> edge<T>(const quadix<T, 2>& quadix, \ 655 const std::size_t& edge_index); \ 656 template segment<T, 3> edge<T>(const quadix<T, 3>& quadix, \ 657 const std::size_t& edge_index); \ 658 template segment<T, 2> edge<T>(const rectangle<T>& rectangle, \ 659 const std::size_t& edge); \ 660 template segment<T, 2> edge<T>(const polygon<T, 2>& polygon, \ 661 const std::size_t& edge); \ 662 template segment<T, 3> edge<T>(const polygon<T, 3>& polygon, \ 663 const std::size_t& edge); \ 664 template segment<T, 2> opposing_edge<T>(const triangle<T, 2>& triangle, \ 665 const std::size_t& corner); \ 666 template segment<T, 3> opposing_edge<T>(const triangle<T, 3>& triangle, \ 667 const std::size_t& corner); \ 668 template segment<T, 2> reverse_segment<T>(const segment<T, 2>& segment); \ 669 template segment<T, 3> reverse_segment<T>(const segment<T, 3>& segment); \ 670 template point2d<T> rectangle_corner<T>(const rectangle<T>& rectangle, \ 671 const std::size_t& corner_index); \ 672 template point3d<T> box_corner<T>(const box<T, 3>& box, \ 673 const std::size_t& corner_index); \ 674 template line<T, 2> triangle_bisector<T>(const triangle<T, 2>& triangle, \ 675 const std::size_t& bisector); \ 676 template line<T, 3> triangle_bisector<T>(const triangle<T, 3>& triangle, \ 677 const std::size_t& bisector); \ 678 template line<T, 2> triangle_external_bisector<T>( \ 679 const triangle<T, 2>& triangle, const std::size_t& corner, \ 680 const std::size_t& opposing_corner); \ 681 template line<T, 3> triangle_external_bisector<T>( \ 682 const triangle<T, 3>& triangle, const std::size_t& corner, \ 683 const std::size_t& opposing_corner); \ 684 template line<T, 2> triangle_median<T>(const triangle<T, 2>& triangle, \ 685 const std::size_t& median); \ 686 template line<T, 3> triangle_median<T>(const triangle<T, 3>& triangle, \ 687 const std::size_t& median); \ 688 template line<T, 2> triangle_symmedian<T>(const triangle<T, 2>& triangle, \ 689 const std::size_t& symmedian); \ 690 template line<T, 3> triangle_symmedian<T>(const triangle<T, 3>& triangle, \ 691 const std::size_t& symmedian); \ 692 template line<T, 2> euler_line<T>(const triangle<T, 2>& triangle); \ 693 template line<T, 3> euler_line<T>(const triangle<T, 3>& triangle); \ 694 template point2d<T> exmedian_point<T>(const triangle<T, 2>& triangle, \ 695 const std::size_t& corner); \ 696 template point3d<T> exmedian_point<T>(const triangle<T, 3>& triangle, \ 697 const std::size_t& corner); \ 698 template point2d<T> feuerbach_point<T>(const triangle<T, 2>& triangle); \ 699 template line<T, 2> confined_triangle_median<T>( \ 700 const triangle<T, 2>& triangle, const point2d<T>& point, \ 701 const std::size_t& median); \ 702 template line<T, 3> confined_triangle_median<T>( \ 703 const triangle<T, 3>& triangle, const point3d<T>& point, \ 704 const std::size_t& median); \ 705 template line<T, 2> create_parallel_line_on_point<T>( \ 706 const line<T, 2>& line, const point2d<T>& point); \ 707 template line<T, 3> create_parallel_line_on_point<T>( \ 708 const line<T, 3>& line, const point3d<T>& point); \ 709 template segment<T, 2> create_parallel_segment_on_point<T>( \ 710 const line<T, 2>& line, const point2d<T>& point); \ 711 template segment<T, 3> create_parallel_segment_on_point<T>( \ 712 const line<T, 3>& line, const point3d<T>& point); \ 713 template bool point_in_rectangle<T>(const T& px, const T& py, const T& x1, \ 714 const T& y1, const T& x2, const T& y2); \ 715 template bool point_in_rectangle<T>(const point2d<T>& point, const T& x1, \ 716 const T& y1, const T& x2, const T& y2); \ 717 template bool point_in_rectangle<T>(const T& px, const T& py, \ 718 const rectangle<T>& rectangle); \ 719 template bool point_in_rectangle<T>(const point2d<T>& point, \ 720 const rectangle<T>& rectangle); \ 721 template bool point_in_rectangle<T>(const point2d<T>& point, \ 722 const point2d<T>& rect_point1, \ 723 point2d<T>& rect_point2); \ 724 template bool point_in_rectangle<T>(const point2d<T>& point, \ 725 const segment<T, 2>& segment); \ 726 template bool point_in_box<T>(const T& px, const T& py, const T& pz, \ 727 const T& x1, const T& y1, const T& z1, \ 728 const T& x2, const T& y2, const T& z2); \ 729 template bool point_in_box<T>(const point3d<T>& point, const T& x1, \ 730 const T& y1, const T& z1, const T& x2, \ 731 const T& y2, const T& z2); \ 732 template bool point_in_box<T>(const T& px, const T& py, const T& pz, \ 733 const box<T, 3>& box); \ 734 template bool point_in_box<T>(const point3d<T>& point, \ 735 const box<T, 3>& box); \ 736 template bool point_in_box<T>(const point3d<T>& point, \ 737 const point3d<T>& box_point1, \ 738 const point3d<T>& box_point2); \ 739 template bool point_in_box<T>(const point3d<T>& point, \ 740 const segment<T, 3>& segment); \ 741 template bool point_in_triangle<T>(const T& px, const T& py, const T& x1, \ 742 const T& y1, const T& x2, const T& y2, \ 743 const T& x3, const T& y3); \ 744 template bool point_in_triangle<T>( \ 745 const point2d<T>& point, const point2d<T>& point1, \ 746 const point2d<T>& point2, const point2d<T>& point3); \ 747 template bool point_in_triangle<T>(const T& px, const T& py, \ 748 const triangle<T, 2>& triangle); \ 749 template bool point_in_triangle<T>(const point2d<T>& point, \ 750 const triangle<T, 2>& triangle); \ 751 template bool point_in_quadix<T>( \ 752 const T& px, const T& py, const T& x1, const T& y1, const T& x2, \ 753 const T& y2, const T& x3, const T& y3, const T& x4, const T& y4); \ 754 template bool point_in_quadix<T>( \ 755 const point2d<T>& point, const point2d<T>& point1, \ 756 const point2d<T>& point2, const point2d<T>& point3, \ 757 const point2d<T>& point4); \ 758 template bool point_in_quadix<T>(const T& px, const T& py, \ 759 const quadix<T, 2>& quadix); \ 760 template bool point_in_quadix<T>(const point2d<T>& point, \ 761 const quadix<T, 2>& quadix); \ 762 template bool point_in_circle<T>(const T& px, const T& py, const T& cx, \ 763 const T& cy, const T& radius); \ 764 template bool point_in_circle<T>(const T& px, const T& py, \ 765 const circle<T>& circle); \ 766 template bool point_in_circle<T>(const point2d<T>& point, \ 767 const circle<T>& circle); \ 768 template bool point_in_sphere<T>(const T& px, const T& py, const T& pz, \ 769 const T& cx, const T& cy, const T& cz, \ 771 template bool point_in_sphere<T>(const T& px, const T& py, const T& pz, \ 772 const sphere<T>& sphere); \ 773 template bool point_in_sphere<T>(const point3d<T>& point, \ 774 const sphere<T>& sphere); \ 775 template bool point_in_three_point_circle<T>( \ 776 const T& px, const T& py, const T& x1, const T& y1, const T& x2, \ 777 const T& y2, const T& x3, const T& y3); \ 778 template bool point_in_three_point_circle<T>( \ 779 const point2d<T>& point, const point2d<T>& point1, \ 780 const point2d<T>& point2, const point2d<T>& point3); \ 781 template bool point_in_three_point_circle<T>(const point2d<T>& point, \ 782 const triangle<T, 2> triangle); \ 783 template bool point_in_focus_area<T>(const T& px, const T& py, const T& x1, \ 784 const T& y1, const T& x2, const T& y2, \ 785 const T& x3, const T& y3); \ 786 template bool point_in_focus_area<T>( \ 787 const point2d<T>& point, const point2d<T>& point1, \ 788 const point2d<T>& point2, const point2d<T>& point3); \ 789 template bool point_on_segment<T>(const point2d<T>& point, \ 790 const segment<T, 2>& segment); \ 791 template bool point_on_segment<T>(const point3d<T>& point, \ 792 const segment<T, 3>& segment); \ 793 template bool point_on_ray<T>(const T& px, const T& py, const T& ox, \ 794 const T& oy, const T& dx, const T& dy); \ 795 template bool point_on_ray<T>(const T& px, const T& py, const T& pz, \ 796 const T& ox, const T& oy, const T& oz, \ 797 const T& dx, const T& dy, const T& dz); \ 798 template bool point_on_ray<T>(const point2d<T>& point, \ 799 const ray<T, 2>& ray); \ 800 template bool point_on_ray<T>(const point3d<T>& point, \ 801 const ray<T, 3>& ray); \ 802 template bool point_on_rectangle<T>(const T& px, const T& py, const T& x1, \ 803 const T& y1, const T& x2, const T& y2); \ 804 template bool point_on_rectangle<T>(const point2d<T>& point, const T& x1, \ 805 const T& y1, const T& x2, const T& y2); \ 806 template bool point_on_rectangle<T>(const T& px, const T& py, \ 807 const rectangle<T>& rectangle); \ 808 template bool point_on_rectangle<T>(const point2d<T>& point, \ 809 const rectangle<T>& rectangle); \ 810 template bool point_on_triangle<T>(const T& px, const T& py, const T& x1, \ 811 const T& y1, const T& x2, const T& y2, \ 812 const T& x3, const T& y3); \ 813 template bool point_on_triangle<T>( \ 814 const point2d<T>& point, const point2d<T>& point1, \ 815 const point2d<T>& point2, const point2d<T>& point3); \ 816 template bool point_on_triangle<T>(const T& px, const T& py, \ 817 const triangle<T, 2>& triangle); \ 818 template bool point_on_triangle<T>(const point2d<T>& point, \ 819 const triangle<T, 2>& triangle); \ 820 template bool point_on_quadix<T>( \ 821 const T& px, const T& py, const T& x1, const T& y1, const T& x2, \ 822 const T& y2, const T& x3, const T& y3, const T& x4, const T& y4); \ 823 template bool point_on_quadix<T>( \ 824 const point2d<T>& point, const point2d<T>& point1, \ 825 const point2d<T>& point2, const point2d<T>& point3, \ 826 const point2d<T>& point4); \ 827 template bool point_on_quadix<T>(const T& px, const T& py, \ 828 const quadix<T, 2>& quadix); \ 829 template bool point_on_quadix<T>(const point2d<T>& point, \ 830 const quadix<T, 2>& quadix); \ 831 template bool point_on_circle<T>(const T& px, const T& py, const T& cx, \ 832 const T& cy, const T& radius); \ 833 template bool point_on_circle<T>(const T& px, const T& py, \ 834 const circle<T>& circle); \ 835 template bool point_on_circle<T>(const point2d<T>& point, \ 836 const circle<T>& circle); \ 837 template bool point_on_bezier<T>(const point2d<T>& point, \ 838 const quadratic_bezier<T, 2>& bezier, \ 839 const std::size_t& steps, const T& fuzzy); \ 840 template bool point_on_bezier<T>(const point2d<T>& point, \ 841 const cubic_bezier<T, 2>& bezier, \ 842 const std::size_t& steps, const T& fuzzy); \ 843 template bool point_on_bezier<T>(const point3d<T>& point, \ 844 const quadratic_bezier<T, 3>& bezier, \ 845 const std::size_t& steps, const T& fuzzy); \ 846 template bool point_on_bezier<T>(const point3d<T>& point, \ 847 const cubic_bezier<T, 3>& bezier, \ 848 const std::size_t& steps, const T& fuzzy); \ 849 template point2d<T> isogonal_conjugate<T>(const point2d<T>& point, \ 850 const triangle<T, 2>& triangle); \ 851 template point3d<T> isogonal_conjugate<T>(const point3d<T>& point, \ 852 const triangle<T, 3>& triangle); \ 853 template point2d<T> cyclocevian_conjugate<T>( \ 854 const point2d<T>& point, const triangle<T, 2>& triangle); \ 855 template point2d<T> symmedian_point<T>(const triangle<T, 2>& triangle); \ 856 template point3d<T> symmedian_point<T>(const triangle<T, 3>& triangle); \ 857 template void create_equilateral_triangle<T>( \ 858 const T& x1, const T& y1, const T& x2, const T& y2, T& x3, T& y3); \ 859 template void create_equilateral_triangle<T>( \ 860 const point2d<T>& point1, const point2d<T>& point2, point2d<T>& point3); \ 861 template triangle<T, 2> create_equilateral_triangle<T>( \ 862 const T& x1, const T& y1, const T& x2, const T& y2); \ 863 template triangle<T, 2> create_equilateral_triangle<T>( \ 864 const point2d<T>& point1, const point2d<T>& point2); \ 865 template triangle<T, 2> create_equilateral_triangle<T>( \ 866 const T& cx, const T& cy, const T& side_length); \ 867 template triangle<T, 2> create_equilateral_triangle<T>( \ 868 const point2d<T>& center_point, const T& side_length); \ 869 template triangle<T, 2> create_isosceles_triangle<T>( \ 870 const point2d<T>& point1, const point2d<T>& point2, const T& angle); \ 871 template triangle<T, 2> create_isosceles_triangle<T>( \ 872 const segment<T, 2>& segment, const T& angle); \ 873 template triangle<T, 2> create_triangle<T>( \ 874 const point2d<T>& point1, const point2d<T>& point2, const T& angle1, \ 876 template triangle<T, 2> create_triangle<T>( \ 877 const segment<T, 2>& segment, const T& angle1, const T& angle2); \ 878 template triangle<T, 2> create_morley_triangle<T>( \ 879 const triangle<T, 2>& triangle); \ 880 template triangle<T, 2> create_cevian_triangle<T>( \ 881 const triangle<T, 2>& triangle, const point2d<T>& point); \ 882 template triangle<T, 3> create_cevian_triangle<T>( \ 883 const triangle<T, 3>& triangle, const point3d<T>& point); \ 884 template triangle<T, 2> create_anticevian_triangle<T>( \ 885 const triangle<T, 2>& triangle, const point2d<T>& point); \ 886 template triangle<T, 3> create_anticevian_triangle<T>( \ 887 const triangle<T, 3>& triangle, const point3d<T>& point); \ 888 template triangle<T, 2> create_anticomplementary_triangle<T>( \ 889 const triangle<T, 2>& triangle); \ 890 template triangle<T, 3> create_anticomplementary_triangle<T>( \ 891 const triangle<T, 3>& triangle); \ 892 template triangle<T, 2> create_inner_napoleon_triangle<T>( \ 893 const triangle<T, 2>& triangle); \ 894 template triangle<T, 2> create_outer_napoleon_triangle<T>( \ 895 const triangle<T, 2>& triangle); \ 896 template triangle<T, 2> create_inner_vecten_triangle<T>( \ 897 const triangle<T, 2>& triangle); \ 898 template triangle<T, 2> create_outer_vecten_triangle<T>( \ 899 const triangle<T, 2>& triangle); \ 900 template triangle<T, 2> create_medial_triangle<T>( \ 901 const triangle<T, 2>& triangle); \ 902 template triangle<T, 3> create_medial_triangle<T>( \ 903 const triangle<T, 3>& triangle); \ 904 template triangle<T, 2> create_contact_triangle<T>( \ 905 const triangle<T, 2>& triangle); \ 906 template triangle<T, 3> create_contact_triangle<T>( \ 907 const triangle<T, 3>& triangle); \ 908 template triangle<T, 2> create_symmedial_triangle<T>( \ 909 const triangle<T, 2>& triangle, const point2d<T>& point); \ 910 template triangle<T, 2> create_orthic_triangle<T>( \ 911 const triangle<T, 2>& triangle); \ 912 template triangle<T, 3> create_orthic_triangle<T>( \ 913 const triangle<T, 3>& triangle); \ 914 template triangle<T, 2> create_pedal_triangle<T>( \ 915 const point2d<T>& point, const triangle<T, 2>& triangle); \ 916 template triangle<T, 3> create_pedal_triangle<T>( \ 917 const point3d<T>& point, const triangle<T, 3>& triangle); \ 918 template triangle<T, 2> create_antipedal_triangle<T>( \ 919 const point2d<T>& point, const triangle<T, 2>& triangle); \ 920 template triangle<T, 2> create_excentral_triangle<T>( \ 921 const triangle<T, 2>& triangle); \ 922 template triangle<T, 3> create_excentral_triangle<T>( \ 923 const triangle<T, 3>& triangle); \ 924 template triangle<T, 2> create_incentral_triangle<T>( \ 925 const triangle<T, 2>& triangle); \ 926 template triangle<T, 3> create_incentral_triangle<T>( \ 927 const triangle<T, 3>& triangle); \ 928 template triangle<T, 2> create_intouch_triangle<T>( \ 929 const triangle<T, 2>& triangle); \ 930 template triangle<T, 2> create_extouch_triangle<T>( \ 931 const triangle<T, 2>& triangle); \ 932 template triangle<T, 3> create_extouch_triangle<T>( \ 933 const triangle<T, 3>& triangle); \ 934 template triangle<T, 2> create_feuerbach_triangle<T>( \ 935 const triangle<T, 2>& triangle); \ 936 template triangle<T, 2> create_circumcevian_triangle<T>( \ 937 const triangle<T, 2>& triangle, const point2d<T>& point); \ 938 template triangle<T, 2> create_circummedial_triangle<T>( \ 939 const triangle<T, 2>& triangle); \ 940 template triangle<T, 2> create_first_brocard_triangle<T>( \ 941 const triangle<T, 2>& triangle); \ 942 template void create_right_triangle<T>( \ 943 const wykobi::point2d<T>& p1, const wykobi::point2d<T>& p2, \ 944 wykobi::point2d<T>& c1, wykobi::point2d<T>& c2); \ 945 template void create_equilateral_quadix<T>(const T& x1, const T& y1, \ 946 const T& x2, const T& y2, T& x3, \ 947 T& y3, T& x4, T& y4); \ 948 template void create_equilateral_quadix<T>( \ 949 const point2d<T>& point1, const point2d<T>& point2, point2d<T>& point3, \ 950 point2d<T>& point4); \ 951 template quadix<T, 2> create_equilateral_quadix<T>( \ 952 const T& x1, const T& y1, const T& x2, const T& y2); \ 953 template quadix<T, 2> create_equilateral_quadix<T>( \ 954 const point2d<T>& point1, const point2d<T>& point2); \ 955 template quadix<T, 2> create_equilateral_quadix<T>( \ 956 const segment<T, 2>& segment); \ 957 template quadix<T, 2> create_equilateral_quadix<T>(const T& cx, const T& cy, \ 958 const T& side_length); \ 959 template quadix<T, 2> create_equilateral_quadix<T>( \ 960 const point2d<T>& center_point, const T& side_length); \ 961 template void torricelli_point<T>(const T& x1, const T& y1, const T& x2, \ 962 const T& y2, const T& x3, const T& y3, \ 964 template point2d<T> torricelli_point<T>(const point2d<T>& point1, \ 965 const point2d<T>& point2, \ 966 const point2d<T>& point3); \ 967 template point2d<T> torricelli_point<T>(const triangle<T, 2>& triangle); \ 968 template bool trilateration<T>( \ 969 const T& c0x, const T& c0y, const T& c0r, const T& c1x, const T& c1y, \ 970 const T& c1r, const T& c2x, const T& c2y, const T& c2r, T& px, T& py); \ 971 template point2d<T> trilateration<T>( \ 972 const circle<T>& c0, const circle<T>& c1, const circle<T>& c2); \ 973 template void incenter<T>(const T& x1, const T& y1, const T& x2, \ 974 const T& y2, const T& x3, const T& y3, T& px, \ 976 template void incenter<T>(const T& x1, const T& y1, const T& z1, \ 977 const T& x2, const T& y2, const T& z2, \ 978 const T& x3, const T& y3, const T& z3, T& px, \ 980 template point2d<T> incenter<T>(const point2d<T>& point1, \ 981 const point2d<T>& point2, \ 982 const point2d<T>& point3); \ 983 template point3d<T> incenter<T>(const point3d<T>& point1, \ 984 const point3d<T>& point2, \ 985 const point3d<T>& point3); \ 986 template point2d<T> incenter<T>(const triangle<T, 2>& triangle); \ 987 template point3d<T> incenter<T>(const triangle<T, 3>& triangle); \ 988 template void circumcenter<T>(const T& x1, const T& y1, const T& x2, \ 989 const T& y2, const T& x3, const T& y3, T& px, \ 991 template void circumcenter<T>(const T& x1, const T& y1, const T& z1, \ 992 const T& x2, const T& y2, const T& z2, \ 993 const T& x3, const T& y3, const T& z3, T& px, \ 995 template point2d<T> circumcenter<T>(const point2d<T>& point1, \ 996 const point2d<T>& point2, \ 997 const point2d<T>& point3); \ 998 template point3d<T> circumcenter<T>(const point3d<T>& point1, \ 999 const point3d<T>& point2, \ 1000 const point3d<T>& point3); \ 1001 template point2d<T> circumcenter<T>(const triangle<T, 2>& triangle); \ 1002 template point3d<T> circumcenter<T>(const triangle<T, 3>& triangle); \ 1003 template circle<T> circumcircle<T>(const T& x1, const T& y1, const T& x2, \ 1004 const T& y2, const T& x3, const T& y3); \ 1005 template circle<T> circumcircle<T>(const point2d<T>& point1, \ 1006 const point2d<T>& point2, \ 1007 const point2d<T>& point3); \ 1008 template circle<T> circumcircle<T>(const triangle<T, 2>& triangle); \ 1009 template sphere<T> circumsphere<T>(const point3d<T>& point1, \ 1010 const point3d<T>& point2, \ 1011 const point3d<T>& point3); \ 1012 template sphere<T> circumsphere<T>(const T& x1, const T& y1, const T& z1, \ 1013 const T& x2, const T& y2, const T& z2, \ 1014 const T& x3, const T& y3, const T& z3); \ 1015 template sphere<T> circumsphere<T>(const triangle<T, 3>& triangle); \ 1016 template circle<T> inscribed_circle<T>(const T& x1, const T& y1, \ 1017 const T& x2, const T& y2, \ 1018 const T& x3, const T& y3); \ 1019 template circle<T> inscribed_circle<T>(const point2d<T>& point1, \ 1020 const point2d<T>& point2, \ 1021 const point2d<T>& point3); \ 1022 template circle<T> inscribed_circle<T>(const triangle<T, 2>& triangle); \ 1023 template sphere<T> inscribed_sphere<T>( \ 1024 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1025 const T& z2, const T& x3, const T& y3, const T& z3); \ 1026 template sphere<T> inscribed_sphere<T>(const point3d<T>& point1, \ 1027 const point3d<T>& point2, \ 1028 const point3d<T>& point3); \ 1029 template sphere<T> inscribed_sphere<T>(const triangle<T, 3>& triangle); \ 1030 template circle<T> nine_point_circle<T>(const T& x1, const T& y1, \ 1031 const T& x2, const T& y2, \ 1032 const T& x3, const T& y3); \ 1033 template circle<T> nine_point_circle<T>(const point2d<T>& point1, \ 1034 const point2d<T>& point2, \ 1035 const point2d<T>& point3); \ 1036 template circle<T> nine_point_circle<T>(const triangle<T, 2>& triangle); \ 1037 template point2d<T> orthocenter<T>(const triangle<T, 2>& triangle); \ 1038 template point3d<T> orthocenter<T>(const triangle<T, 3>& triangle); \ 1039 template point2d<T> excenter<T>(const triangle<T, 2>& triangle, \ 1040 const std::size_t& corner); \ 1041 template point3d<T> excenter<T>(const triangle<T, 3>& triangle, \ 1042 const std::size_t& corner); \ 1043 template circle<T> excircle<T>(const triangle<T, 2>& triangle, \ 1044 const std::size_t& corner); \ 1045 template circle<T> mandart_circle<T>(const triangle<T, 2>& triangle); \ 1046 template circle<T> brocard_circle<T>(const triangle<T, 2>& triangle); \ 1047 template circle<T> invert_circle_across_circle<T>(const circle<T>& circle1, \ 1048 const circle<T>& circle2); \ 1049 template sphere<T> invert_sphere_across_sphere<T>(const sphere<T>& sphere1, \ 1050 const sphere<T>& sphere2); \ 1051 template void circle_tangent_points<T>( \ 1052 const circle<T>& circle, const point2d<T>& point, point2d<T>& point1, \ 1053 point2d<T>& point2); \ 1054 template line<T, 2> tangent_line<T>(const circle<T>& circle, \ 1055 const point2d<T>& point); \ 1056 template line<T, 2> create_line_from_bisector<T>(const T& x1, const T& y1, \ 1057 const T& x2, const T& y2, \ 1058 const T& x3, const T& y3); \ 1059 template segment<T, 2> create_segment_from_bisector<T>( \ 1060 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1062 template line<T, 3> create_line_from_bisector<T>( \ 1063 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1064 const T& z2, const T& x3, const T& y3, const T& z3); \ 1065 template segment<T, 3> create_segment_from_bisector<T>( \ 1066 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1067 const T& z2, const T& x3, const T& y3, const T& z3); \ 1068 template line<T, 2> create_line_from_bisector<T>(const point2d<T>& point1, \ 1069 const point2d<T>& point2, \ 1070 const point2d<T>& point3); \ 1071 template segment<T, 2> create_segment_from_bisector<T>( \ 1072 const point2d<T>& point1, const point2d<T>& point2, \ 1073 const point2d<T>& point3); \ 1074 template ray<T, 2> create_ray_from_bisector<T>(const point2d<T>& point1, \ 1075 const point2d<T>& point2, \ 1076 const point2d<T>& point3); \ 1077 template line<T, 3> create_line_from_bisector<T>(const point3d<T>& point1, \ 1078 const point3d<T>& point2, \ 1079 const point3d<T>& point3); \ 1080 template segment<T, 3> create_segment_from_bisector<T>( \ 1081 const point3d<T>& point1, const point3d<T>& point2, \ 1082 const point3d<T>& point3); \ 1083 template ray<T, 3> create_ray_from_bisector<T>(const point3d<T>& point1, \ 1084 const point3d<T>& point2, \ 1085 const point3d<T>& point3); \ 1086 template line<T, 2> create_perpendicular_bisector<T>( \ 1087 const T& x1, const T& y1, const T& x2, const T& y2); \ 1088 template line<T, 2> create_perpendicular_bisector<T>( \ 1089 const point2d<T>& point1, const point2d<T>& point2); \ 1090 template line<T, 2> create_perpendicular_bisector<T>( \ 1091 const segment<T, 2>& segment); \ 1092 template line<T, 2> create_perpendicular_line_at_end_point<T>( \ 1093 const line<T, 2>& line); \ 1094 template void closest_point_on_segment_from_point<T>( \ 1095 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1096 const T& py, T& nx, T& ny); \ 1097 template void closest_point_on_segment_from_point<T>( \ 1098 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1099 const T& z2, const T& px, const T& py, const T& pz, T& nx, T& ny, \ 1101 template void closest_point_on_line_from_point<T>( \ 1102 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1103 const T& py, T& nx, T& ny); \ 1104 template void closest_point_on_line_from_point<T>( \ 1105 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1106 const T& z2, const T& px, const T& py, const T& pz, T& nx, T& ny, \ 1108 template void order_sensitive_closest_point_on_segment_from_point<T>( \ 1109 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1110 const T& py, T& nx, T& ny); \ 1111 template void order_sensitive_closest_point_on_segment_from_point<T>( \ 1112 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1113 const T& z2, const T& px, const T& py, const T& pz, T& nx, T& ny, \ 1115 template void order_sensitive_closest_point_on_line_from_point<T>( \ 1116 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1117 const T& py, T& nx, T& ny); \ 1118 template void order_sensitive_closest_point_on_line_from_point<T>( \ 1119 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1120 const T& z2, const T& px, const T& py, const T& pz, T& nx, T& ny, \ 1122 template void closest_point_on_ray_from_point<T>( \ 1123 const T& ox, const T& oy, const T& dx, const T& dy, const T& px, \ 1124 const T& py, T& nx, T& ny); \ 1125 template void closest_point_on_ray_from_point<T>( \ 1126 const T& ox, const T& oy, const T& oz, const T& dx, const T& dy, \ 1127 const T& dz, const T& px, const T& py, const T& pz, T& nx, T& ny, \ 1129 template point2d<T> closest_point_on_segment_from_point<T>( \ 1130 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1132 template point3d<T> closest_point_on_segment_from_point<T>( \ 1133 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1134 const T& z2, const T& px, const T& py, const T& pz); \ 1135 template point2d<T> closest_point_on_segment_from_point<T>( \ 1136 const segment<T, 2>& segment, const point2d<T>& point); \ 1137 template point3d<T> closest_point_on_segment_from_point<T>( \ 1138 const segment<T, 3>& segment, const point3d<T>& point); \ 1139 template point2d<T> closest_point_on_line_from_point<T>( \ 1140 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1142 template point3d<T> closest_point_on_line_from_point<T>( \ 1143 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1144 const T& z2, const T& px, const T& py, const T& pz); \ 1145 template point2d<T> closest_point_on_line_from_point<T>( \ 1146 const line<T, 2>& line, const point2d<T>& point); \ 1147 template point3d<T> closest_point_on_line_from_point<T>( \ 1148 const line<T, 3>& line, const point3d<T>& point); \ 1149 template point2d<T> closest_point_on_ray_from_point<T>( \ 1150 const T& ox, const T& oy, const T& dx, const T& dy, const T& px, \ 1152 template point3d<T> closest_point_on_ray_from_point<T>( \ 1153 const T& ox, const T& oy, const T& oz, const T& dx, const T& dy, \ 1154 const T& dz, const T& px, const T& py, const T& pz); \ 1155 template point2d<T> closest_point_on_ray_from_point<T>( \ 1156 const ray<T, 2>& ray, const point2d<T>& point); \ 1157 template point3d<T> closest_point_on_ray_from_point<T>( \ 1158 const ray<T, 3>& ray, const point3d<T>& point); \ 1159 template void closest_point_on_triangle_from_point<T>( \ 1160 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1161 const T& y3, const T& px, const T& py, T& nx, T& ny); \ 1162 template point2d<T> closest_point_on_triangle_from_point<T>( \ 1163 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1164 const T& y3, const T& px, const T& py); \ 1165 template point2d<T> closest_point_on_triangle_from_point<T>( \ 1166 const triangle<T, 2>& triangle, const T& px, const T& py); \ 1167 template point2d<T> closest_point_on_triangle_from_point<T>( \ 1168 const triangle<T, 2>& triangle, const point2d<T>& point); \ 1169 template void closest_point_on_triangle_from_point<T>( \ 1170 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1171 const T& z2, const T& x3, const T& y3, const T& z3, const T& px, \ 1172 const T& py, const T& pz, T& nx, T& ny, T& nz); \ 1173 template point3d<T> closest_point_on_triangle_from_point<T>( \ 1174 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1175 const T& z2, const T& x3, const T& y3, const T& z3, const T& px, \ 1176 const T& py, const T& pz); \ 1177 template point3d<T> closest_point_on_triangle_from_point<T>( \ 1178 const triangle<T, 3>& triangle, const T& px, const T& py, const T& pz); \ 1179 template point3d<T> closest_point_on_triangle_from_point<T>( \ 1180 const triangle<T, 3>& triangle, const point3d<T>& point); \ 1181 template void closest_point_on_rectangle_from_point<T>( \ 1182 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1183 const T& py, T& nx, T& ny); \ 1184 template point2d<T> closest_point_on_rectangle_from_point<T>( \ 1185 const T& x1, const T& y1, const T& x2, const T& y2, const T& px, \ 1187 template point2d<T> closest_point_on_rectangle_from_point<T>( \ 1188 const rectangle<T>& rectangle, const T& px, const T& py); \ 1189 template point2d<T> closest_point_on_rectangle_from_point<T>( \ 1190 const rectangle<T>& rectangle, const point2d<T>& point); \ 1191 template void closest_point_on_box_from_point<T>( \ 1192 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1193 const T& z2, const T& px, const T& py, const T& pz, T& nx, T& ny, \ 1195 template point3d<T> closest_point_on_box_from_point<T>( \ 1196 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1197 const T& z2, const T& px, const T& py, const T& pz); \ 1198 template point3d<T> closest_point_on_box_from_point<T>( \ 1199 const box<T, 3>& box, const T& px, const T& py, const T& pz); \ 1200 template point3d<T> closest_point_on_box_from_point<T>( \ 1201 const box<T, 3>& box, const point3d<T>& point); \ 1202 template void closest_point_on_quadix_from_point<T>( \ 1203 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1204 const T& y3, const T& x4, const T& y4, const T& px, const T& py, T& nx, \ 1206 template point2d<T> closest_point_on_quadix_from_point<T>( \ 1207 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1208 const T& y3, const T& x4, const T& y4, const T& px, const T& py); \ 1209 template point2d<T> closest_point_on_quadix_from_point<T>( \ 1210 const quadix<T, 2>& quadix, const point2d<T>& point); \ 1211 template point2d<T> closest_point_on_circle_from_point<T>( \ 1212 const circle<T>& circle, const point2d<T>& point); \ 1213 template point3d<T> closest_point_on_sphere_from_point<T>( \ 1214 const sphere<T>& sphere, const point3d<T>& point); \ 1215 template point2d<T> closest_point_on_aabbb_from_point<T>( \ 1216 const rectangle<T>& rectangle, const point2d<T>& point); \ 1217 template point2d<T> closest_point_on_circle_from_segment<T>( \ 1218 const circle<T>& circle, const segment<T, 2>& segment); \ 1219 template point3d<T> closest_point_on_sphere_from_segment<T>( \ 1220 const sphere<T>& sphere, const segment<T, 3>& segment); \ 1221 template point3d<T> closest_point_on_plane_from_point<T>( \ 1222 const plane<T, 3>& plane, const point3d<T>& point); \ 1223 template point2d<T> closest_point_on_bezier_from_point<T>( \ 1224 const quadratic_bezier<T, 2>& bezier, const point2d<T>& point, \ 1225 const std::size_t& steps); \ 1226 template point2d<T> closest_point_on_bezier_from_point<T>( \ 1227 const cubic_bezier<T, 2>& bezier, const point2d<T>& point, \ 1228 const std::size_t& steps); \ 1229 template point3d<T> closest_point_on_bezier_from_point<T>( \ 1230 const quadratic_bezier<T, 3>& bezier, const point3d<T>& point, \ 1231 const std::size_t& steps); \ 1232 template point3d<T> closest_point_on_bezier_from_point<T>( \ 1233 const cubic_bezier<T, 3>& bezier, const point3d<T>& point, \ 1234 const std::size_t& steps); \ 1235 template point2d<T> closest_point_on_circle_from_circle<T>( \ 1236 const circle<T>& circle1, const circle<T>& circle2); \ 1237 template point3d<T> closest_point_on_sphere_from_sphere<T>( \ 1238 const sphere<T>& sphere1, const sphere<T>& sphere2); \ 1239 template point2d<T> closest_point_on_polygon_from_point<T>( \ 1240 const polygon<T, 2>& polygon, const point2d<T>& point); \ 1241 template T minimum_distance_from_point_to_segment<T>( \ 1242 const T& px, const T& py, const T& x1, const T& y1, const T& x2, \ 1244 template T minimum_distance_from_point_to_segment<T>( \ 1245 const T& px, const T& py, const T& pz, const T& x1, const T& y1, \ 1246 const T& z1, const T& x2, const T& y2, const T& z2); \ 1247 template T minimum_distance_from_point_to_segment<T>( \ 1248 const point2d<T>& point, const segment<T, 2>& segment); \ 1249 template T minimum_distance_from_point_to_segment<T>( \ 1250 const point3d<T>& point, const segment<T, 3>& segment); \ 1251 template T minimum_distance_from_point_to_line<T>(const T& px, const T& py, \ 1252 const T& x1, const T& y1, \ 1253 const T& x2, const T& y2); \ 1254 template T minimum_distance_from_point_to_line<T>( \ 1255 const T& px, const T& py, const T& pz, const T& x1, const T& y1, \ 1256 const T& z1, const T& x2, const T& y2, const T& z2); \ 1257 template T minimum_distance_from_point_to_line<T>(const point2d<T>& point, \ 1258 const line<T, 2>& line); \ 1259 template T minimum_distance_from_point_to_line<T>(const point3d<T>& point, \ 1260 const line<T, 3>& line); \ 1261 template T minimum_distance_from_point_to_triangle<T>( \ 1262 const T& px, const T& py, const T& x1, const T& y1, const T& x2, \ 1263 const T& y2, const T& x3, const T& y3); \ 1264 template T minimum_distance_from_point_to_triangle<T>( \ 1265 const point2d<T>& point, const triangle<T, 2>& triangle); \ 1266 template T minimum_distance_from_point_to_rectangle<T>( \ 1267 const T& px, const T& py, const T& x1, const T& y1, const T& x2, \ 1269 template T minimum_distance_from_point_to_rectangle<T>( \ 1270 const point2d<T>& point, const rectangle<T>& rectangle); \ 1271 template void segment_mid_point<T>(const T& x1, const T& y1, const T& x2, \ 1272 const T& y2, T& midx, T& midy); \ 1273 template void segment_mid_point<T>(const segment<T, 2>& segment, T& midx, \ 1275 template point2d<T> segment_mid_point<T>(const point2d<T>& point1, \ 1276 const point2d<T>& point2); \ 1277 template point2d<T> segment_mid_point<T>(const segment<T, 2>& segment); \ 1278 template void segment_mid_point<T>(const T& x1, const T& y1, const T& z1, \ 1279 const T& x2, const T& y2, const T& z2, \ 1280 T& midx, T& midy, T& midz); \ 1281 template void segment_mid_point<T>(const segment<T, 3>& segment, T& midx, \ 1282 T& midy, T& midz); \ 1283 template point3d<T> segment_mid_point<T>(const point3d<T>& point1, \ 1284 const point3d<T>& point2); \ 1285 template point3d<T> segment_mid_point<T>(const segment<T, 3>& segment); \ 1286 template void centroid<T>(const T& x1, const T& y1, const T& x2, \ 1287 const T& y2, T& x, T& y); \ 1288 template void centroid<T>( \ 1289 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1290 const T& z2, const T& x3, const T& y3, const T& z3, T& x, T& y, T& z); \ 1291 template point2d<T> centroid<T>(const point2d<T>& point1, \ 1292 const point2d<T>& point2); \ 1293 template point2d<T> centroid<T>(const segment<T, 2>& segment); \ 1294 template void centroid<T>(const T& x1, const T& y1, const T& x2, \ 1295 const T& y2, const T& x3, const T& y3, T& x, \ 1297 template void centroid<T>(const T& x1, const T& y1, const T& x2, \ 1298 const T& y2, const T& x3, const T& y3, \ 1299 const T& x4, const T& y4, T& x, T& y); \ 1300 template void centroid<T>(const triangle<T, 2>& triangle, T& x, T& y); \ 1301 template void centroid<T>(const triangle<T, 3>& triangle, T& x, T& y, T& z); \ 1302 template void centroid<T>(const quadix<T, 2>& quadix, T& x, T& y); \ 1303 template void centroid<T>(const rectangle<T>& rectangle, T& x, T& y); \ 1304 template void centroid<T>(const box<T, 3>& box, T& x, T& y, T& z); \ 1305 template void centroid<T>(const polygon<T, 2>& polygon, T& x, T& y); \ 1306 template point2d<T> centroid<T>(const point2d<T>& point1, \ 1307 const point2d<T>& point2, \ 1308 const point2d<T>& point3); \ 1309 template point2d<T> centroid<T>( \ 1310 const point2d<T>& point1, const point2d<T>& point2, \ 1311 const point2d<T>& point3, const point2d<T>& point4); \ 1312 template point2d<T> centroid<T>(const triangle<T, 2>& triangle); \ 1313 template point3d<T> centroid<T>(const triangle<T, 3>& triangle); \ 1314 template point2d<T> centroid<T>(const quadix<T, 2>& quadix); \ 1315 template point2d<T> centroid<T>(const rectangle<T>& rectangle); \ 1316 template point3d<T> centroid<T>(const box<T, 3>& box); \ 1317 template point2d<T> centroid<T>(const polygon<T, 2>& polygon); \ 1318 template bool point_in_convex_polygon<T>(const T& px, const T& py, \ 1319 const polygon<T, 2>& polygon); \ 1320 template bool point_in_convex_polygon<T>(const point2d<T>& point, \ 1321 const polygon<T, 2>& polygon); \ 1322 template bool point_on_polygon_edge<T>(const T& px, const T& py, \ 1323 const polygon<T, 2>& polygon); \ 1324 template bool point_on_polygon_edge<T>(const point2d<T>& point, \ 1325 const polygon<T, 2>& polygon); \ 1326 template bool point_in_polygon<T>(const T& px, const T& py, \ 1327 const polygon<T, 2>& polygon); \ 1328 template bool point_in_polygon<T>(const point2d<T>& point, \ 1329 const polygon<T, 2>& polygon); \ 1330 template bool point_in_polygon_winding_number<T>( \ 1331 const T& px, const T& py, const polygon<T, 2>& polygon); \ 1332 template bool point_in_polygon_winding_number<T>( \ 1333 const point2d<T>& point, const polygon<T, 2>& polygon); \ 1334 template bool convex_quadix<T>(const quadix<T, 2>& quadix); \ 1335 template bool convex_quadix<T>(const quadix<T, 3>& quadix); \ 1336 template bool is_convex_polygon<T>(const polygon<T, 2>& polygon); \ 1337 template polygon<T, 2> remove_consecutive_collinear_points<T>( \ 1338 const polygon<T, 2>& polygon); \ 1340 remove_consecutive_collinear_points<T, InputIterator2d, OutputIterator2d>( \ 1341 const InputIterator2d begin, const InputIterator2d end, \ 1342 OutputIterator2d out); \ 1343 template bool convex_vertex<T>(const std::size_t& index, \ 1344 const polygon<T, 2>& polygon, \ 1345 const int& polygon_orientation); \ 1346 template bool collinear_vertex<T>(const std::size_t& index, \ 1347 const polygon<T, 2>& polygon); \ 1348 template bool vertex_is_ear<T>(const std::size_t& index, \ 1349 const polygon<T, 2>& polygon); \ 1350 template triangle<T, 2> vertex_triangle<T>(const std::size_t& index, \ 1351 const polygon<T, 2> polygon); \ 1352 template int polygon_orientation<T>(const polygon<T, 2>& polygon); \ 1353 template bool is_equilateral_triangle<T>(const triangle<T, 2>& triangle); \ 1354 template bool is_equilateral_triangle<T>(const triangle<T, 3>& triangle); \ 1355 template bool is_isosceles_triangle<T>(const triangle<T, 2>& triangle); \ 1356 template bool is_isosceles_triangle<T>(const triangle<T, 3>& triangle); \ 1357 template bool is_right_triangle<T>(const wykobi::triangle<T, 2>& triangle); \ 1358 template bool is_right_triangle<T>(const wykobi::triangle<T, 3>& triangle); \ 1359 template bool are_perspective_triangles<T>(const triangle<T, 2>& triangle1, \ 1360 const triangle<T, 2>& triangle2); \ 1361 template bool are_perspective_triangles<T>(const triangle<T, 3>& triangle1, \ 1362 const triangle<T, 3>& triangle2); \ 1363 template line<T, 2> perspectrix<T>(const triangle<T, 2>& triangle1, \ 1364 const triangle<T, 2>& triangle2); \ 1365 template line<T, 3> perspectrix<T>(const triangle<T, 3>& triangle1, \ 1366 const triangle<T, 3>& triangle2); \ 1367 template void mirror<T>(const T& px, const T& py, const T& x1, const T& y1, \ 1368 const T& x2, const T& y2, T& nx, T& ny); \ 1369 template void mirror<T>(const T& px, const T& py, const T& pz, const T& x1, \ 1370 const T& y1, const T& z1, const T& x2, const T& y2, \ 1371 const T& z2, T& nx, T& ny, T& nz); \ 1372 template point2d<T> mirror<T>(const point2d<T>& point, \ 1373 const line<T, 2>& mirror_axis); \ 1374 template segment<T, 2> mirror<T>(const segment<T, 2>& segment, \ 1375 const line<T, 2>& mirror_axis); \ 1376 template line<T, 2> mirror<T>(const line<T, 2>& line, \ 1377 const wykobi::line<T, 2>& mirror_axis); \ 1378 template rectangle<T> mirror<T>(const rectangle<T>& rectangle, \ 1379 const line<T, 2>& mirror_axis); \ 1380 template triangle<T, 2> mirror<T>(const triangle<T, 2>& triangle, \ 1381 const line<T, 2>& mirror_axis); \ 1382 template quadix<T, 2> mirror<T>(const quadix<T, 2>& quadix, \ 1383 const line<T, 2>& mirror_axis); \ 1384 template circle<T> mirror<T>(const circle<T>& circle, \ 1385 const line<T, 2>& mirror_axis); \ 1386 template polygon<T, 2> mirror<T>(const polygon<T, 2>& polygon, \ 1387 const line<T, 2>& mirror_axis); \ 1388 template point3d<T> mirror<T>(const point3d<T>& point, \ 1389 const line<T, 3>& mirror_line); \ 1390 template segment<T, 3> mirror<T>(const segment<T, 3>& segment, \ 1391 const line<T, 3>& mirror_axis); \ 1392 template line<T, 3> mirror<T>(const line<T, 3>& line, \ 1393 const wykobi::line<T, 3>& mirror_axis); \ 1394 template box<T, 3> mirror<T>(const box<T, 3>& box, \ 1395 const line<T, 3>& mirror_axis); \ 1396 template triangle<T, 3> mirror<T>(const triangle<T, 3>& triangle, \ 1397 const line<T, 3>& mirror_axis); \ 1398 template quadix<T, 3> mirror<T>(const quadix<T, 3>& quadix, \ 1399 const line<T, 3>& mirror_axis); \ 1400 template sphere<T> mirror<T>(const sphere<T>& sphere, \ 1401 const line<T, 3>& mirror_axis); \ 1402 template polygon<T, 3> mirror<T>(const polygon<T, 3>& polygon, \ 1403 const line<T, 3>& mirror_axis); \ 1404 template point3d<T> mirror<T>(const point3d<T>& point, \ 1405 const plane<T, 3>& plane); \ 1406 template segment<T, 3> mirror<T>(const segment<T, 3>& segment, \ 1407 const plane<T, 3>& mirror_plane); \ 1408 template line<T, 3> mirror<T>(const line<T, 3>& line, \ 1409 const plane<T, 3>& mirror_plane); \ 1410 template box<T, 3> mirror<T>(const box<T, 3>& box, \ 1411 const plane<T, 3>& mirror_plane); \ 1412 template triangle<T, 3> mirror<T>(const triangle<T, 3>& triangle, \ 1413 const plane<T, 3>& mirror_plane); \ 1414 template quadix<T, 3> mirror<T>(const quadix<T, 3>& quadix, \ 1415 const plane<T, 3>& mirror_plane); \ 1416 template sphere<T> mirror<T>(const sphere<T>& sphere, \ 1417 const plane<T, 3>& mirror_plane); \ 1418 template polygon<T, 3> mirror<T>(const polygon<T, 3>& polygon, \ 1419 const plane<T, 3>& mirror_plane); \ 1420 template void nonsymmetric_mirror<T>(const T& px, const T& py, const T& x1, \ 1421 const T& y1, const T& x2, const T& y2, \ 1422 const T& ratio, T& nx, T& ny); \ 1423 template point2d<T> nonsymmetric_mirror<T>( \ 1424 const point2d<T>& point, const T& ratio, const line<T, 2>& line); \ 1425 template segment<T, 2> nonsymmetric_mirror<T>( \ 1426 const segment<T, 2>& segment, const T& ratio, const line<T, 2>& line); \ 1427 template rectangle<T> nonsymmetric_mirror<T>( \ 1428 const rectangle<T>& rectangle, const T& ratio, const line<T, 2>& line); \ 1429 template triangle<T, 2> nonsymmetric_mirror<T>( \ 1430 const triangle<T, 2>& triangle, const T& ratio, const line<T, 2>& line); \ 1431 template quadix<T, 2> nonsymmetric_mirror<T>( \ 1432 const quadix<T, 2>& quadix, const T& ratio, const line<T, 2>& line); \ 1433 template circle<T> nonsymmetric_mirror<T>( \ 1434 const circle<T>& circle, const T& ratio, const line<T, 2>& line); \ 1435 template polygon<T, 2> nonsymmetric_mirror<T>( \ 1436 const polygon<T, 2>& polygon, const T& ratio, const line<T, 2>& line); \ 1437 template point3d<T> nonsymmetric_mirror<T>( \ 1438 const point3d<T>& point, const T& ratio, const plane<T, 3>& plane); \ 1439 template segment<T, 3> nonsymmetric_mirror<T>( \ 1440 const segment<T, 3>& segment, const T& ratio, const plane<T, 3>& plane); \ 1441 template box<T, 3> nonsymmetric_mirror<T>( \ 1442 const box<T, 3>& box, const T& ratio, const plane<T, 3>& plane); \ 1443 template triangle<T, 3> nonsymmetric_mirror<T>( \ 1444 const triangle<T, 3>& triangle, const T& ratio, \ 1445 const plane<T, 3>& plane); \ 1446 template quadix<T, 3> nonsymmetric_mirror<T>( \ 1447 const quadix<T, 3>& quadix, const T& ratio, const plane<T, 3>& plane); \ 1448 template sphere<T> nonsymmetric_mirror<T>( \ 1449 const sphere<T>& sphere, const T& ratio, const plane<T, 3>& plane); \ 1450 template polygon<T, 3> nonsymmetric_mirror<T>( \ 1451 const polygon<T, 3>& polygon, const T& ratio, const plane<T, 3>& plane); \ 1452 template point2d<T> invert_point<T>(const point2d<T>& point, \ 1453 const circle<T>& circle); \ 1454 template point3d<T> invert_point<T>(const point3d<T>& point, \ 1455 const sphere<T>& sphere); \ 1456 template point2d<T> antipodal_point<T>(const point2d<T>& point, \ 1457 const circle<T>& circle); \ 1458 template point3d<T> antipodal_point<T>(const point3d<T>& point, \ 1459 const sphere<T>& sphere); \ 1460 template T distance<T>(const T& x1, const T& y1, const T& x2, const T& y2); \ 1461 template T distance<T>(const T& x1, const T& y1, const T& z1, const T& x2, \ 1462 const T& y2, const T& z2); \ 1463 template T distance<T>(const point2d<T>& point1, const point2d<T>& point2); \ 1464 template T distance<T>(const point3d<T>& point1, const point3d<T>& point2); \ 1465 template T distance<T>(const curve_point<T, 2>& point1, \ 1466 const curve_point<T, 2>& point2); \ 1467 template T distance<T>(const curve_point<T, 3>& point1, \ 1468 const curve_point<T, 3>& point2); \ 1469 template T distance<T>(const point2d<T>& point, \ 1470 const segment<T, 2>& segment); \ 1471 template T distance<T>(const point3d<T>& point, \ 1472 const segment<T, 3>& segment); \ 1473 template T distance<T>(const point2d<T>& point, \ 1474 const rectangle<T>& rectangle); \ 1475 template T distance<T>(const point2d<T>& point, \ 1476 const triangle<T, 2>& triangle); \ 1477 template T distance<T>(const point2d<T>& point, const quadix<T, 2>& quadix); \ 1478 template T distance<T>(const point2d<T>& point, const ray<T, 2>& ray); \ 1479 template T distance<T>(const point3d<T>& point, const ray<T, 3>& ray); \ 1480 template T distance<T>(const point3d<T>& point, const plane<T, 3>& plane); \ 1481 template T distance<T>(const line<T, 2>& line1, const line<T, 2>& line2); \ 1482 template T distance<T>(const line<T, 3>& line1, const line<T, 3>& line2); \ 1483 template T distance<T>(const segment<T, 2>& segment1, \ 1484 const segment<T, 2>& segment2); \ 1485 template T distance<T>(const segment<T, 3>& segment1, \ 1486 const segment<T, 3>& segment2); \ 1487 template T distance<T>(const segment<T, 2>& segment); \ 1488 template T distance<T>(const segment<T, 3>& segment); \ 1489 template T distance<T>(const segment<T, 2>& segment, \ 1490 const triangle<T, 2>& triangle); \ 1491 template T distance<T>(const segment<T, 3>& segment, \ 1492 const triangle<T, 3>& triangle); \ 1493 template T distance<T>(const segment<T, 2>& segment, \ 1494 const rectangle<T>& rectangle); \ 1495 template T distance<T>(const segment<T, 2>& segment, \ 1496 const circle<T>& circle); \ 1497 template T distance<T>(const triangle<T, 2>& triangle1, \ 1498 const triangle<T, 2>& triangle2); \ 1499 template T distance<T>(const triangle<T, 2>& triangle, \ 1500 const rectangle<T>& rectangle); \ 1501 template T distance<T>(const rectangle<T>& rectangle1, \ 1502 const rectangle<T>& rectangle2); \ 1503 template T distance<T>(const triangle<T, 2>& triangle, \ 1504 const circle<T>& circle); \ 1505 template T distance<T>(const rectangle<T>& rectangle, \ 1506 const circle<T>& circle); \ 1507 template T distance<T>(const point2d<T>& point, const circle<T>& circle); \ 1508 template T distance<T>(const circle<T>& circle1, const circle<T>& circle2); \ 1509 template T distance<T>(const sphere<T>& sphere1, const sphere<T>& sphere2); \ 1510 template T lay_distance<T>(const T& x1, const T& y1, const T& x2, \ 1512 template T lay_distance<T>(const T& x1, const T& y1, const T& z1, \ 1513 const T& x2, const T& y2, const T& z2); \ 1514 template T lay_distance<T>(const point2d<T>& point1, \ 1515 const point2d<T>& point2); \ 1516 template T lay_distance<T>(const point3d<T>& point1, \ 1517 const point3d<T>& point2); \ 1518 template T lay_distance<T>(const point2d<T>& point, \ 1519 const triangle<T, 2>& triangle); \ 1520 template T lay_distance<T>(const point2d<T>& point, \ 1521 const quadix<T, 2>& triangle); \ 1522 template T lay_distance<T>(const point2d<T>& point, const ray<T, 2>& ray); \ 1523 template T lay_distance<T>(const point3d<T>& point, const ray<T, 3>& ray); \ 1524 template T lay_distance<T>(const point3d<T>& point, \ 1525 const plane<T, 3>& plane); \ 1526 template T lay_distance<T>(const segment<T, 2>& segment1, \ 1527 const segment<T, 2>& segment2); \ 1528 template T lay_distance<T>(const segment<T, 3>& segment1, \ 1529 const segment<T, 3>& segment2); \ 1530 template T lay_distance<T>(const line<T, 3>& line1, \ 1531 const line<T, 3>& line2); \ 1532 template T lay_distance<T>(const segment<T, 2>& segment); \ 1533 template T lay_distance<T>(const segment<T, 3>& segment); \ 1534 template T lay_distance<T>(const segment<T, 2>& segment, \ 1535 const triangle<T, 2>& triangle); \ 1536 template T lay_distance<T>(const segment<T, 3>& segment, \ 1537 const triangle<T, 3>& triangle); \ 1538 template T manhattan_distance<T>(const T& x1, const T& y1, const T& x2, \ 1540 template T manhattan_distance<T>(const T& x1, const T& y1, const T& z1, \ 1541 const T& x2, const T& y2, const T& z2); \ 1542 template T manhattan_distance<T>(const point2d<T>& point1, \ 1543 const point2d<T>& point2); \ 1544 template T manhattan_distance<T>(const point3d<T>& point1, \ 1545 const point3d<T>& point2); \ 1546 template T manhattan_distance<T>(const point2d<T>& point, \ 1547 const ray<T, 2>& ray); \ 1548 template T manhattan_distance<T>(const point3d<T>& point, \ 1549 const ray<T, 3>& ray); \ 1550 template T manhattan_distance<T>(const segment<T, 2>& segment); \ 1551 template T manhattan_distance<T>(const segment<T, 3>& segment); \ 1552 template T manhattan_distance<T>(const circle<T>& circle1, \ 1553 const circle<T>& circle2); \ 1554 template T chebyshev_distance<T>(const T& x1, const T& y1, const T& x2, \ 1556 template T chebyshev_distance<T>(const T& x1, const T& y1, const T& z1, \ 1557 const T& x2, const T& y2, const T& z2); \ 1558 template T chebyshev_distance<T>(const point2d<T>& point1, \ 1559 const point2d<T>& point2); \ 1560 template T chebyshev_distance<T>(const point3d<T>& point1, \ 1561 const point3d<T>& point2); \ 1562 template T chebyshev_distance<T>(const segment<T, 2>& segment); \ 1563 template T chebyshev_distance<T>(const segment<T, 3>& segment); \ 1564 template T chebyshev_distance<T>(const circle<T>& circle1, \ 1565 const circle<T>& circle2); \ 1566 template T inverse_chebyshev_distance<T>(const T& x1, const T& y1, \ 1567 const T& x2, const T& y2); \ 1568 template T inverse_chebyshev_distance<T>(const T& x1, const T& y1, \ 1569 const T& z1, const T& x2, \ 1570 const T& y2, const T& z2); \ 1571 template T inverse_chebyshev_distance<T>(const point2d<T>& point1, \ 1572 const point2d<T>& point2); \ 1573 template T inverse_chebyshev_distance<T>(const point3d<T>& point1, \ 1574 const point3d<T>& point2); \ 1575 template T inverse_chebyshev_distance<T>(const segment<T, 2>& segment); \ 1576 template T inverse_chebyshev_distance<T>(const segment<T, 3>& segment); \ 1577 template T inverse_chebyshev_distance<T>(const circle<T>& circle1, \ 1578 const circle<T>& circle2); \ 1579 template point2d<T> minkowski_sum<T>(const point2d<T>& point1, \ 1580 const point2d<T>& point2); \ 1581 template polygon<T, 2> minkowski_sum<T>(const rectangle<T>& rectangle1, \ 1582 const rectangle<T>& rectangle2); \ 1583 template polygon<T, 2> minkowski_sum<T>(const triangle<T, 2>& triangle1, \ 1584 const triangle<T, 2>& triangle2); \ 1585 template polygon<T, 2> minkowski_sum<T>(const quadix<T, 2>& quadix1, \ 1586 const quadix<T, 2>& quadix2); \ 1587 template polygon<T, 2> minkowski_sum<T>(const circle<T>& triangle, \ 1588 const circle<T>& circle); \ 1589 template polygon<T, 2> minkowski_sum<T>(const triangle<T, 2>& triangle, \ 1590 const rectangle<T>& rectangle); \ 1591 template polygon<T, 2> minkowski_sum<T>(const triangle<T, 2>& triangle, \ 1592 const quadix<T, 2>& quadix); \ 1593 template polygon<T, 2> minkowski_sum<T>(const triangle<T, 2>& triangle, \ 1594 const circle<T>& circle); \ 1595 template polygon<T, 2> minkowski_sum<T>(const quadix<T, 2>& quadix, \ 1596 const circle<T>& circle); \ 1597 template polygon<T, 2> minkowski_sum<T>(const quadix<T, 2>& quadix, \ 1598 const rectangle<T>& rectangle); \ 1599 template polygon<T, 2> minkowski_sum<T>(const rectangle<T>& rectangle, \ 1600 const circle<T>& circle); \ 1601 template polygon<T, 2> minkowski_sum<T>(const polygon<T, 2>& polygon1, \ 1602 const polygon<T, 2>& polygon2); \ 1603 template point2d<T> minkowski_difference<T>(const point2d<T>& point1, \ 1604 const point2d<T>& point2); \ 1605 template polygon<T, 2> minkowski_difference<T>( \ 1606 const rectangle<T>& rectangle1, const rectangle<T>& rectangle2); \ 1607 template polygon<T, 2> minkowski_difference<T>( \ 1608 const triangle<T, 2>& triangle1, const triangle<T, 2>& triangle2); \ 1609 template polygon<T, 2> minkowski_difference<T>(const quadix<T, 2>& quadix1, \ 1610 const quadix<T, 2>& quadix2); \ 1611 template polygon<T, 2> minkowski_difference<T>(const circle<T>& triangle, \ 1612 const circle<T>& circle); \ 1613 template polygon<T, 2> minkowski_difference<T>( \ 1614 const triangle<T, 2>& triangle, const rectangle<T>& rectangle); \ 1615 template polygon<T, 2> minkowski_difference<T>( \ 1616 const triangle<T, 2>& triangle, const quadix<T, 2>& quadix); \ 1617 template polygon<T, 2> minkowski_difference<T>( \ 1618 const triangle<T, 2>& triangle, const circle<T>& circle); \ 1619 template polygon<T, 2> minkowski_difference<T>(const quadix<T, 2>& quadix, \ 1620 const circle<T>& circle); \ 1621 template polygon<T, 2> minkowski_difference<T>( \ 1622 const quadix<T, 2>& quadix, const rectangle<T>& rectangle); \ 1623 template polygon<T, 2> minkowski_difference<T>( \ 1624 const rectangle<T>& rectangle, const circle<T>& circle); \ 1625 template polygon<T, 2> minkowski_difference<T>( \ 1626 const polygon<T, 2>& polygon1, const polygon<T, 2>& polygon2); \ 1627 template T distance_segment_to_segment<T>( \ 1628 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1629 const T& y3, const T& x4, const T& y4); \ 1630 template T distance_segment_to_segment<T>( \ 1631 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1632 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 1633 const T& y4, const T& z4); \ 1634 template T lay_distance_segment_to_segment<T>( \ 1635 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1636 const T& y3, const T& x4, const T& y4); \ 1637 template T lay_distance_segment_to_segment<T>( \ 1638 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1639 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 1640 const T& y4, const T& z4); \ 1641 template T distance_line_to_line<T>(const T& x1, const T& y1, const T& x2, \ 1642 const T& y2, const T& x3, const T& y3, \ 1643 const T& x4, const T& y4); \ 1644 template T distance_line_to_line<T>(const T& x1, const T& y1, const T& z1, \ 1645 const T& x2, const T& y2, const T& z2, \ 1646 const T& x3, const T& y3, const T& z3, \ 1647 const T& x4, const T& y4, const T& z4); \ 1648 template T lay_distance_line_to_line<T>( \ 1649 const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, \ 1650 const T& y3, const T& x4, const T& y4); \ 1651 template T lay_distance_line_to_line<T>( \ 1652 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 1653 const T& z2, const T& x3, const T& y3, const T& z3, const T& x4, \ 1654 const T& y4, const T& z4); \ 1655 template T lay_distance_from_point_to_circle_center<T>( \ 1656 const point2d<T>& point, const circle<T>& circle); \ 1657 template T lay_distance_from_point_to_sphere_center<T>( \ 1658 const point3d<T>& point, const sphere<T>& sphere); \ 1659 template T distance_from_point_to_circle_center<T>(const point2d<T>& point, \ 1660 const circle<T>& circle); \ 1661 template T distance_from_point_to_sphere_center<T>(const point3d<T>& point, \ 1662 const sphere<T>& sphere); \ 1663 template T span_length(const rectangle<T>& rect); \ 1664 template T span_length(const box<T, 3>& box); \ 1665 template void project_point_t<T>(const T& srcx, const T& srcy, \ 1666 const T& destx, const T& desty, const T& t, \ 1668 template void project_point_t<T>( \ 1669 const T& srcx, const T& srcy, const T& srcz, const T& destx, \ 1670 const T& desty, const T& destz, const T& t, T& nx, T& ny, T& nz); \ 1671 template void project_point<T>(const T& srcx, const T& srcy, const T& destx, \ 1672 const T& desty, const T& dist, T& nx, T& ny); \ 1673 template void project_point<T>( \ 1674 const T& srcx, const T& srcy, const T& srcz, const T& destx, \ 1675 const T& desty, const T& destz, const T& dist, T& nx, T& ny, T& nz); \ 1676 template void project_point<T>(const T& px, const T& py, const T& angle, \ 1677 const T& distance, T& nx, T& ny); \ 1678 template void project_point0<T>(const T& px, const T& py, const T& distance, \ 1680 template void project_point45<T>(const T& px, const T& py, \ 1681 const T& distance, T& nx, T& ny); \ 1682 template void project_point90<T>(const T& px, const T& py, \ 1683 const T& distance, T& nx, T& ny); \ 1684 template void project_point135<T>(const T& px, const T& py, \ 1685 const T& distance, T& nx, T& ny); \ 1686 template void project_point180<T>(const T& px, const T& py, \ 1687 const T& distance, T& nx, T& ny); \ 1688 template void project_point225<T>(const T& px, const T& py, \ 1689 const T& distance, T& nx, T& ny); \ 1690 template void project_point270<T>(const T& px, const T& py, \ 1691 const T& distance, T& nx, T& ny); \ 1692 template void project_point315<T>(const T& px, const T& py, \ 1693 const T& distance, T& nx, T& ny); \ 1694 template point2d<T> project_point_t<T>(const point2d<T>& source_point, \ 1695 const point2d<T>& destination_point, \ 1697 template point3d<T> project_point_t<T>(const point3d<T>& source_point, \ 1698 const point3d<T>& destination_point, \ 1700 template point2d<T> project_point<T>(const point2d<T>& source_point, \ 1701 const point2d<T>& destination_point, \ 1702 const T& distance); \ 1703 template point3d<T> project_point<T>(const point3d<T>& source_point, \ 1704 const point3d<T>& destination_point, \ 1705 const T& distance); \ 1706 template point2d<T> project_point<T>(const point2d<T>& point, \ 1707 const T& angle, const T& distance); \ 1708 template point2d<T> project_point0<T>(const point2d<T>& point, \ 1709 const T& distance); \ 1710 template point2d<T> project_point45<T>(const point2d<T>& point, \ 1711 const T& distance); \ 1712 template point2d<T> project_point90<T>(const point2d<T>& point, \ 1713 const T& distance); \ 1714 template point2d<T> project_point135<T>(const point2d<T>& point, \ 1715 const T& distance); \ 1716 template point2d<T> project_point180<T>(const point2d<T>& point, \ 1717 const T& distance); \ 1718 template point2d<T> project_point225<T>(const point2d<T>& point, \ 1719 const T& distance); \ 1720 template point2d<T> project_point270<T>(const point2d<T>& point, \ 1721 const T& distance); \ 1722 template point2d<T> project_point315<T>(const point2d<T>& point, \ 1723 const T& distance); \ 1724 template point2d<T> project_object<T>(const point2d<T>& point, \ 1725 const T& angle, const T& distance); \ 1726 template segment<T, 2> project_object<T>(const segment<T, 2>& segment, \ 1727 const T& angle, const T& distance); \ 1728 template triangle<T, 2> project_object<T>( \ 1729 const triangle<T, 2>& triangle, const T& angle, const T& distance); \ 1730 template quadix<T, 2> project_object<T>(const quadix<T, 2>& quadix, \ 1731 const T& angle, const T& distance); \ 1732 template circle<T> project_object<T>(const circle<T>& circle, \ 1733 const T& angle, const T& distance); \ 1734 template polygon<T, 2> project_object<T>(const polygon<T, 2>& polygon, \ 1735 const T& angle, const T& distance); \ 1736 template segment<T, 2> project_onto_axis<T>(const point2d<T>& point, \ 1737 const line<T, 2>& axis); \ 1738 template segment<T, 2> project_onto_axis<T>(const triangle<T, 2>& triangle, \ 1739 const line<T, 2>& axis); \ 1740 template segment<T, 2> project_onto_axis<T>(const rectangle<T>& rectangle, \ 1741 const line<T, 2>& axis); \ 1742 template segment<T, 2> project_onto_axis<T>(const quadix<T, 2>& quadix, \ 1743 const line<T, 2>& axis); \ 1744 template segment<T, 2> project_onto_axis<T>(const circle<T>& circle, \ 1745 const line<T, 2>& axis); \ 1746 template segment<T, 2> project_onto_axis<T>(const polygon<T, 2>& polygon, \ 1747 const line<T, 2>& axis); \ 1748 template segment<T, 3> project_onto_axis<T>(const point3d<T>& point, \ 1749 const line<T, 3>& axis); \ 1750 template segment<T, 3> project_onto_axis<T>(const triangle<T, 3>& triangle, \ 1751 const line<T, 3>& axis); \ 1752 template segment<T, 3> project_onto_axis<T>(const box<T, 3>& box, \ 1753 const line<T, 3>& axis); \ 1754 template segment<T, 3> project_onto_axis<T>(const quadix<T, 3>& quadix, \ 1755 const line<T, 3>& axis); \ 1756 template segment<T, 3> project_onto_axis<T>(const sphere<T>& sphere, \ 1757 const line<T, 3>& axis); \ 1758 template segment<T, 3> project_onto_axis<T>(const polygon<T, 3>& polygon, \ 1759 const line<T, 3>& axis); \ 1760 template void calculate_bezier_coefficients<T>( \ 1761 const quadratic_bezier<T, 2>& bezier, T& ax, T& bx, T& ay, T& by); \ 1762 template void calculate_bezier_coefficients<T>( \ 1763 const quadratic_bezier<T, 3>& bezier, T& ax, T& bx, T& ay, T& by, T& az, \ 1765 template void calculate_bezier_coefficients<T>( \ 1766 const cubic_bezier<T, 2>& bezier, T& ax, T& bx, T& cx, T& ay, T& by, \ 1768 template void calculate_bezier_coefficients<T>( \ 1769 const cubic_bezier<T, 3>& bezier, T& ax, T& bx, T& cx, T& ay, T& by, \ 1770 T& cy, T& az, T& bz, T& cz); \ 1771 template void calculate_bezier_coefficients<T>( \ 1772 const quadratic_bezier<T, 2>& bezier, \ 1773 bezier_coefficients<T, 2, eQuadraticBezier>& coeffs); \ 1774 template void calculate_bezier_coefficients<T>( \ 1775 const quadratic_bezier<T, 3>& bezier, \ 1776 bezier_coefficients<T, 3, eQuadraticBezier>& coeffs); \ 1777 template void calculate_bezier_coefficients<T>( \ 1778 const cubic_bezier<T, 2>& bezier, \ 1779 bezier_coefficients<T, 2, eCubicBezier>& coeffs); \ 1780 template void calculate_bezier_coefficients<T>( \ 1781 const cubic_bezier<T, 3>& bezier, \ 1782 bezier_coefficients<T, 3, eCubicBezier>& coeffs); \ 1783 template point2d<T> create_point_on_bezier<T>( \ 1784 const point2d<T>& start_point, const T& ax, const T& bx, const T& ay, \ 1785 const T& by, const T& t); \ 1786 template point3d<T> create_point_on_bezier<T>( \ 1787 const point3d<T>& start_point, const T& ax, const T& bx, const T& ay, \ 1788 const T& by, const T& az, const T& bz, const T& t); \ 1789 template point2d<T> create_point_on_bezier<T>( \ 1790 const point2d<T>& start_point, const T& ax, const T& bx, const T& cx, \ 1791 const T& ay, const T& by, const T& cy, const T& t); \ 1792 template point3d<T> create_point_on_bezier<T>( \ 1793 const point3d<T>& start_point, const T& ax, const T& bx, const T& cx, \ 1794 const T& ay, const T& by, const T& cy, const T& az, const T& bz, \ 1795 const T& cz, const T& t); \ 1796 template point2d<T> create_point_on_bezier<T>( \ 1797 const point2d<T>& start_point, \ 1798 const bezier_coefficients<T, 2, eQuadraticBezier>& coeffs, const T& t); \ 1799 template point3d<T> create_point_on_bezier<T>( \ 1800 const point3d<T>& start_point, \ 1801 const bezier_coefficients<T, 3, eQuadraticBezier>& coeffs, const T& t); \ 1802 template point2d<T> create_point_on_bezier<T>( \ 1803 const point2d<T>& start_point, \ 1804 const bezier_coefficients<T, 2, eCubicBezier>& coeffs, const T& t); \ 1805 template point3d<T> create_point_on_bezier<T>( \ 1806 const point3d<T>& start_point, \ 1807 const bezier_coefficients<T, 3, eCubicBezier>& coeffs, const T& t); \ 1808 template void generate_bezier<T, OutputIterator2d>( \ 1809 const quadratic_bezier<T, 2>& bezier, OutputIterator2d out, \ 1810 const std::size_t& point_count); \ 1811 template void generate_bezier<T, OutputIterator3d>( \ 1812 const quadratic_bezier<T, 3>& bezier, OutputIterator3d out, \ 1813 const std::size_t& point_count); \ 1814 template void generate_bezier<T, OutputIterator2d>( \ 1815 const cubic_bezier<T, 2>& bezier, OutputIterator2d out, \ 1816 const std::size_t& point_count); \ 1817 template void generate_bezier<T, OutputIterator3d>( \ 1818 const cubic_bezier<T, 3>& bezier, OutputIterator3d out, \ 1819 const std::size_t& point_count); \ 1820 template T bezier_curve_length<T>(const quadratic_bezier<T, 2>& bezier, \ 1821 const std::size_t& point_count); \ 1822 template T bezier_curve_length<T>(const quadratic_bezier<T, 3>& bezier, \ 1823 const std::size_t& point_count); \ 1824 template T bezier_curve_length<T>(const cubic_bezier<T, 2>& bezier, \ 1825 const std::size_t& point_count); \ 1826 template T bezier_curve_length<T>(const cubic_bezier<T, 3>& bezier, \ 1827 const std::size_t& point_count); \ 1828 template triangle<T, 2> bezier_convex_hull<T>( \ 1829 const quadratic_bezier<T, 2>& bezier); \ 1830 template quadix<T, 2> bezier_convex_hull<T>( \ 1831 const cubic_bezier<T, 2>& bezier); \ 1832 template segment<T, 2> center_at_location<T>(const segment<T, 2>& segment, \ 1833 const T& x, const T& y); \ 1834 template segment<T, 3> center_at_location<T>( \ 1835 const segment<T, 3>& segment, const T& x, const T& y, const T& z); \ 1836 template triangle<T, 2> center_at_location<T>( \ 1837 const triangle<T, 2>& triangle, const T& x, const T& y); \ 1838 template rectangle<T> center_at_location<T>(const rectangle<T>& rectangle, \ 1839 const T& x, const T& y); \ 1840 template box<T, 3> center_at_location<T>(const box<T, 3>& box, const T& x, \ 1841 const T& y, const T& z); \ 1842 template quadix<T, 2> center_at_location<T>(const quadix<T, 2>& quadix, \ 1843 const T& x, const T& y); \ 1844 template circle<T> center_at_location<T>(const circle<T>& circle, \ 1845 const T& x, const T& y); \ 1846 template polygon<T, 2> center_at_location<T>(const polygon<T, 2>& polygon, \ 1847 const T& x, const T& y); \ 1848 template segment<T, 2> center_at_location<T>( \ 1849 const segment<T, 2>& segment, const point2d<T>& center_point); \ 1850 template segment<T, 3> center_at_location<T>( \ 1851 const segment<T, 3>& segment, const point3d<T>& center_point); \ 1852 template triangle<T, 2> center_at_location<T>( \ 1853 const triangle<T, 2>& triangle, const point2d<T>& center_point); \ 1854 template rectangle<T> center_at_location<T>(const rectangle<T>& rectangle, \ 1855 const point2d<T>& center_point); \ 1856 template box<T, 3> center_at_location<T>(const box<T, 3>& box, \ 1857 const point3d<T>& center_point); \ 1858 template quadix<T, 2> center_at_location<T>(const quadix<T, 2>& quadix, \ 1859 const point2d<T>& center_point); \ 1860 template circle<T> center_at_location<T>(const circle<T>& circle, \ 1861 const point2d<T>& center_point); \ 1862 template polygon<T, 2> center_at_location<T>( \ 1863 const polygon<T, 2>& polygon, const point2d<T>& center_point); \ 1864 template void shorten_segment<T>(T & x1, T & y1, T & x2, T & y2, \ 1866 template void shorten_segment<T>(T & x1, T & y1, T & z1, T & x2, T & y2, \ 1867 T & z2, const T& amount); \ 1868 template segment<T, 2> shorten_segment<T>(const segment<T, 2>& segment, \ 1870 template segment<T, 3> shorten_segment<T>(const segment<T, 3>& segment, \ 1872 template void lengthen_segment<T>(T & x1, T & y1, T & x2, T & y2, \ 1874 template void lengthen_segment<T>(T & x1, T & y1, T & z1, T & x2, T & y2, \ 1875 T & z2, const T& amount); \ 1876 template segment<T, 2> lengthen_segment<T>(const segment<T, 2>& segment, \ 1878 template segment<T, 3> lengthen_segment<T>(const segment<T, 3>& segment, \ 1880 template int out_code<T>(const point2d<T>& point, \ 1881 const rectangle<T>& rectangle); \ 1882 template bool clip<T>(const T& x1, const T& y1, const T& x2, const T& y2, \ 1883 const T& x3, const T& y3, const T& x4, const T& y4, \ 1884 T& cx1, T& cy1, T& cx2, T& cy2); \ 1885 template bool clip<T>(const T& x1, const T& y1, const T& z1, const T& x2, \ 1886 const T& y2, const T& z2, const T& x3, const T& y3, \ 1887 const T& z3, const T& x4, const T& y4, const T& z4, \ 1888 T& cx1, T& cy1, T& cz1, T& cx2, T& cy2, T& cz2); \ 1889 template bool clip<T>(const segment<T, 2>& src_segment, \ 1890 const rectangle<T>& rectangle, \ 1891 segment<T, 2>& csegment); \ 1892 template bool clip<T>(const segment<T, 2>& src_segment, \ 1893 const triangle<T, 2>& triangle, \ 1894 segment<T, 2>& csegment); \ 1895 template bool clip<T>(const segment<T, 2>& src_segment, \ 1896 const quadix<T, 2>& quadix, segment<T, 2>& csegment); \ 1897 template bool clip<T>(const segment<T, 2>& src_segment, \ 1898 const circle<T>& circle, segment<T, 2>& csegment); \ 1899 template bool clip<T>(const rectangle<T>& rectangle1, \ 1900 const rectangle<T>& rectangle2, \ 1901 rectangle<T>& crectangle); \ 1902 template bool clip<T>(const box<T, 3>& box1, const box<T, 3>& box2, \ 1904 template T area<T>(const point2d<T>& point1, const point2d<T>& point2, \ 1905 const point2d<T>& point3); \ 1906 template T area<T>(const point3d<T>& point1, const point3d<T>& point2, \ 1907 const point3d<T>& point3); \ 1908 template T area<T>(const triangle<T, 2>& triangle); \ 1909 template T area<T>(const triangle<T, 3>& triangle); \ 1910 template T area<T>(const quadix<T, 2>& quadix); \ 1911 template T area<T>(const quadix<T, 3>& quadix); \ 1912 template T area<T>(const rectangle<T>& rectangle); \ 1913 template T area<T>(const circle<T>& circle); \ 1914 template T area<T>(const polygon<T, 2>& polygon); \ 1915 template T perimeter<T>(const point2d<T>& point1, const point2d<T>& point2, \ 1916 const point2d<T>& point3); \ 1917 template T perimeter<T>(const point3d<T>& point1, const point3d<T>& point2, \ 1918 const point3d<T>& point3); \ 1919 template T perimeter<T>(const triangle<T, 2>& triangle); \ 1920 template T perimeter<T>(const triangle<T, 3>& triangle); \ 1921 template T perimeter<T>(const quadix<T, 2>& quadix); \ 1922 template T perimeter<T>(const quadix<T, 3>& quadix); \ 1923 template T perimeter<T>(const rectangle<T>& rectangle); \ 1924 template T perimeter<T>(const circle<T>& circle); \ 1925 template T perimeter<T>(const polygon<T, 2>& polygon); \ 1926 template void rotate<T>(const T& rotation_angle, const T& x, const T& y, \ 1928 template void rotate<T>(const T& rotation_angle, const T& x, const T& y, \ 1929 const T& ox, const T& oy, T& nx, T& ny); \ 1930 template point2d<T> rotate<T>(const T& rotation_angle, \ 1931 const point2d<T>& point); \ 1932 template point2d<T> rotate<T>(const T& rotation_angle, \ 1933 const point2d<T>& point, \ 1934 const point2d<T>& opoint); \ 1935 template segment<T, 2> rotate<T>(const T& rotation_angle, \ 1936 const segment<T, 2>& segment); \ 1937 template segment<T, 2> rotate<T>(const T& rotation_angle, \ 1938 const segment<T, 2>& segment, \ 1939 const point2d<T>& opoint); \ 1940 template triangle<T, 2> rotate<T>(const T& rotation_angle, \ 1941 const triangle<T, 2>& triangle); \ 1942 template triangle<T, 2> rotate<T>(const T& rotation_angle, \ 1943 const triangle<T, 2>& triangle, \ 1944 const point2d<T>& opoint); \ 1945 template quadix<T, 2> rotate<T>(const T& rotation_angle, \ 1946 const quadix<T, 2>& quadix); \ 1947 template quadix<T, 2> rotate<T>(const T& rotation_angle, \ 1948 const quadix<T, 2>& quadix, \ 1949 const point2d<T>& opoint); \ 1950 template polygon<T, 2> rotate<T>(const T& rotation_angle, \ 1951 const polygon<T, 2>& polygon); \ 1952 template polygon<T, 2> rotate<T>(const T& rotation_angle, \ 1953 const polygon<T, 2>& polygon, \ 1954 const point2d<T>& opoint); \ 1955 template void rotate<T>(const T& rx, const T& ry, const T& rz, const T& x, \ 1956 const T& y, const T& z, T& nx, T& ny, T& nz); \ 1957 template void rotate<T>(const T& rx, const T& ry, const T& rz, const T& x, \ 1958 const T& y, const T& z, const T& ox, const T& oy, \ 1959 const T& oz, T& nx, T& ny, T& nz); \ 1960 template point3d<T> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1961 const point3d<T>& point); \ 1962 template point3d<T> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1963 const point3d<T>& point, \ 1964 const point3d<T>& opoint); \ 1965 template segment<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1966 const segment<T, 3>& segment); \ 1967 template segment<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1968 const segment<T, 3>& segment, \ 1969 const point3d<T>& opoint); \ 1970 template triangle<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1971 const triangle<T, 3>& triangle); \ 1972 template triangle<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1973 const triangle<T, 3>& triangle, \ 1974 const point3d<T>& opoint); \ 1975 template quadix<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1976 const quadix<T, 3>& quadix); \ 1977 template quadix<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1978 const quadix<T, 3>& quadix, \ 1979 const point3d<T>& opoint); \ 1980 template polygon<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1981 const polygon<T, 3>& polygon); \ 1982 template polygon<T, 3> rotate<T>(const T& rx, const T& ry, const T& rz, \ 1983 const polygon<T, 3>& polygon, \ 1984 const point3d<T>& opoint); \ 1985 template void fast_rotate<T>(const trig_luts<T>& lut, \ 1986 const int rotation_angle, const T& x, \ 1987 const T& y, T& nx, T& ny); \ 1988 template void fast_rotate<T>( \ 1989 const trig_luts<T>& lut, const int rotation_angle, const T& x, \ 1990 const T& y, const T& ox, const T& oy, T& nx, T& ny); \ 1991 template point2d<T> fast_rotate<T>(const trig_luts<T>& lut, \ 1992 const int rotation_angle, \ 1993 const point2d<T>& point); \ 1994 template point2d<T> fast_rotate<T>( \ 1995 const trig_luts<T>& lut, const int rotation_angle, \ 1996 const point2d<T>& point, const point2d<T>& opoint); \ 1997 template segment<T, 2> fast_rotate<T>(const trig_luts<T>& lut, \ 1998 const int rotation_angle, \ 1999 const segment<T, 2>& segment); \ 2000 template segment<T, 2> fast_rotate<T>( \ 2001 const trig_luts<T>& lut, const int rotation_angle, \ 2002 const segment<T, 2>& segment, const point2d<T>& opoint); \ 2003 template triangle<T, 2> fast_rotate<T>(const trig_luts<T>& lut, \ 2004 const int rotation_angle, \ 2005 const triangle<T, 2>& triangle); \ 2006 template triangle<T, 2> fast_rotate<T>( \ 2007 const trig_luts<T>& lut, const int rotation_angle, \ 2008 const triangle<T, 2>& triangle, const point2d<T>& opoint); \ 2009 template quadix<T, 2> fast_rotate<T>(const trig_luts<T>& lut, \ 2010 const int rotation_angle, \ 2011 const quadix<T, 2>& quadix); \ 2012 template quadix<T, 2> fast_rotate<T>( \ 2013 const trig_luts<T>& lut, const int rotation_angle, \ 2014 const quadix<T, 2>& quadix, const point2d<T>& opoint); \ 2015 template polygon<T, 2> fast_rotate<T>(const trig_luts<T>& lut, \ 2016 const int rotation_angle, \ 2017 const polygon<T, 2>& polygon); \ 2018 template polygon<T, 2> fast_rotate<T>( \ 2019 const trig_luts<T>& lut, const int rotation_angle, \ 2020 const polygon<T, 2>& polygon, const point2d<T>& opoint); \ 2021 template void fast_rotate<T>(const trig_luts<T>& lut, const int rx, \ 2022 const int ry, const int rz, const T& x, \ 2023 const T& y, const T& z, T& nx, T& ny, T& nz); \ 2024 template void fast_rotate<T>(const trig_luts<T>& lut, const int rx, \ 2025 const int ry, const int rz, const T& x, \ 2026 const T& y, const T& z, const T& ox, \ 2027 const T& oy, const T& oz, T& nx, T& ny, T& nz); \ 2028 template point3d<T> fast_rotate<T>(const trig_luts<T>& lut, const int rx, \ 2029 const int ry, const int rz, \ 2030 const point3d<T>& point); \ 2031 template point3d<T> fast_rotate<T>( \ 2032 const trig_luts<T>& lut, const int rx, const int ry, const int rz, \ 2033 const point3d<T>& point, const point3d<T>& opoint); \ 2034 template segment<T, 3> fast_rotate<T>(const trig_luts<T>& lut, const int rx, \ 2035 const int ry, const int rz, \ 2036 const segment<T, 3>& segment); \ 2037 template segment<T, 3> fast_rotate<T>( \ 2038 const trig_luts<T>& lut, const int rx, const int ry, const int rz, \ 2039 const segment<T, 3>& segment, const point3d<T>& opoint); \ 2040 template triangle<T, 3> fast_rotate<T>( \ 2041 const trig_luts<T>& lut, const int rx, const int ry, const int rz, \ 2042 const triangle<T, 3>& triangle); \ 2043 template triangle<T, 3> fast_rotate<T>( \ 2044 const trig_luts<T>& lut, const int rx, const int ry, const int rz, \ 2045 const triangle<T, 3>& triangle, const point3d<T>& opoint); \ 2046 template quadix<T, 3> fast_rotate<T>(const trig_luts<T>& lut, const int rx, \ 2047 const int ry, const int rz, \ 2048 const quadix<T, 3>& quadix); \ 2049 template quadix<T, 3> fast_rotate<T>( \ 2050 const trig_luts<T>& lut, const int rx, const int ry, const int rz, \ 2051 const quadix<T, 3>& quadix, const point3d<T>& opoint); \ 2052 template polygon<T, 3> fast_rotate<T>(const trig_luts<T>& lut, const int rx, \ 2053 const int ry, const int rz, \ 2054 const polygon<T, 3>& polygon); \ 2055 template polygon<T, 3> fast_rotate<T>( \ 2056 const trig_luts<T>& lut, const int rx, const int ry, const int rz, \ 2057 const polygon<T, 3>& polygon, const point3d<T>& opoint); \ 2058 template point2d<T> translate<T>(const T& dx, const T& dy, \ 2059 const point2d<T>& point); \ 2060 template line<T, 2> translate<T>(const T& dx, const T& dy, \ 2061 const line<T, 2>& line); \ 2062 template segment<T, 2> translate<T>(const T& dx, const T& dy, \ 2063 const segment<T, 2>& segment); \ 2064 template triangle<T, 2> translate<T>(const T& dx, const T& dy, \ 2065 const triangle<T, 2>& triangle); \ 2066 template quadix<T, 2> translate<T>(const T& dx, const T& dy, \ 2067 const quadix<T, 2>& quadix); \ 2068 template rectangle<T> translate<T>(const T& dx, const T& dy, \ 2069 const rectangle<T>& rectangle); \ 2070 template circle<T> translate<T>(const T& dx, const T& dy, \ 2071 const circle<T>& circle); \ 2072 template polygon<T, 2> translate<T>(const T& dx, const T& dy, \ 2073 const polygon<T, 2>& polygon); \ 2074 template point2d<T> translate<T>(const T& delta, const point2d<T>& point); \ 2075 template line<T, 2> translate<T>(const T& delta, const line<T, 2>& line); \ 2076 template segment<T, 2> translate<T>(const T& delta, \ 2077 const segment<T, 2>& segment); \ 2078 template triangle<T, 2> translate<T>(const T& delta, \ 2079 const triangle<T, 2>& triangle); \ 2080 template quadix<T, 2> translate<T>(const T& delta, \ 2081 const quadix<T, 2>& quadix); \ 2082 template rectangle<T> translate<T>(const T& delta, \ 2083 const rectangle<T>& rectangle); \ 2084 template circle<T> translate<T>(const T& delta, const circle<T>& circle); \ 2085 template polygon<T, 2> translate<T>(const T& delta, \ 2086 const polygon<T, 2>& polygon); \ 2087 template point2d<T> translate<T>(const vector2d<T>& v, \ 2088 const point2d<T>& point); \ 2089 template line<T, 2> translate<T>(const vector2d<T>& v, \ 2090 const line<T, 2>& line); \ 2091 template segment<T, 2> translate<T>(const vector2d<T>& v, \ 2092 const segment<T, 2>& segment); \ 2093 template triangle<T, 2> translate<T>(const vector2d<T>& v, \ 2094 const triangle<T, 2>& triangle); \ 2095 template quadix<T, 2> translate<T>(const vector2d<T>& v, \ 2096 const quadix<T, 2>& quadix); \ 2097 template rectangle<T> translate<T>(const vector2d<T>& v, \ 2098 const rectangle<T>& rectangle); \ 2099 template circle<T> translate<T>(const vector2d<T>& v, \ 2100 const circle<T>& circle); \ 2101 template polygon<T, 2> translate<T>(const vector2d<T>& v, \ 2102 const polygon<T, 2>& polygon); \ 2103 template point3d<T> translate<T>(const T& dx, const T& dy, const T& dz, \ 2104 const point3d<T>& point); \ 2105 template line<T, 3> translate<T>(const T& dx, const T& dy, const T& dz, \ 2106 const line<T, 3>& line); \ 2107 template segment<T, 3> translate<T>(const T& dx, const T& dy, const T& dz, \ 2108 const segment<T, 3>& segment); \ 2109 template triangle<T, 3> translate<T>(const T& dx, const T& dy, const T& dz, \ 2110 const triangle<T, 3>& triangle); \ 2111 template quadix<T, 3> translate<T>(const T& dx, const T& dy, const T& dz, \ 2112 const quadix<T, 3>& quadix); \ 2113 template box<T, 3> translate<T>(const T& dx, const T& dy, const T& dz, \ 2114 const box<T, 3>& box); \ 2115 template sphere<T> translate<T>(const T& dx, const T& dy, const T& dz, \ 2116 const sphere<T>& sphere); \ 2117 template polygon<T, 3> translate<T>(const T& dx, const T& dy, const T& dz, \ 2118 const polygon<T, 3>& polygon); \ 2119 template point3d<T> translate<T>(const T& delta, const point3d<T>& point); \ 2120 template line<T, 3> translate<T>(const T& delta, const line<T, 3>& line); \ 2121 template segment<T, 3> translate<T>(const T& delta, \ 2122 const segment<T, 3>& segment); \ 2123 template triangle<T, 3> translate<T>(const T& delta, \ 2124 const triangle<T, 3>& triangle); \ 2125 template quadix<T, 3> translate<T>(const T& delta, \ 2126 const quadix<T, 3>& quadix); \ 2127 template box<T, 3> translate<T>(const T& delta, const box<T, 3>& box); \ 2128 template sphere<T> translate<T>(const T& delta, const sphere<T>& sphere); \ 2129 template polygon<T, 3> translate<T>(const T& delta, \ 2130 const polygon<T, 3>& polygon); \ 2131 template point3d<T> translate<T>(const vector3d<T>& v, \ 2132 const point3d<T>& point); \ 2133 template line<T, 3> translate<T>(const vector3d<T>& v, \ 2134 const line<T, 3>& line); \ 2135 template segment<T, 3> translate<T>(const vector3d<T>& v, \ 2136 const segment<T, 3>& segment); \ 2137 template triangle<T, 3> translate<T>(const vector3d<T>& v, \ 2138 const triangle<T, 3>& triangle); \ 2139 template quadix<T, 3> translate<T>(const vector3d<T>& v, \ 2140 const quadix<T, 3>& quadix); \ 2141 template box<T, 3> translate<T>(const vector3d<T>& v, const box<T, 3>& box); \ 2142 template sphere<T> translate<T>(const vector3d<T>& v, \ 2143 const sphere<T>& sphere); \ 2144 template polygon<T, 3> translate<T>(const vector3d<T>& v, \ 2145 const polygon<T, 3>& polygon); \ 2146 template point2d<T> scale<T>(const T& dx, const T& dy, \ 2147 const point2d<T>& point); \ 2148 template line<T, 2> scale<T>(const T& dx, const T& dy, \ 2149 const line<T, 2>& line); \ 2150 template segment<T, 2> scale<T>(const T& dx, const T& dy, \ 2151 const segment<T, 2>& segment); \ 2152 template triangle<T, 2> scale<T>(const T& dx, const T& dy, \ 2153 const triangle<T, 2>& triangle); \ 2154 template quadix<T, 2> scale<T>(const T& dx, const T& dy, \ 2155 const quadix<T, 2>& quadix); \ 2156 template rectangle<T> scale<T>(const T& dx, const T& dy, \ 2157 const rectangle<T>& rectangle); \ 2158 template circle<T> scale<T>(const T& dr, const circle<T>& circle); \ 2159 template polygon<T, 2> scale<T>(const T& dx, const T& dy, \ 2160 const polygon<T, 2>& polygon); \ 2161 template point3d<T> scale<T>(const T& dx, const T& dy, const T& dz, \ 2162 const point3d<T>& point); \ 2163 template line<T, 3> scale<T>(const T& dx, const T& dy, const T& dz, \ 2164 const line<T, 3>& line); \ 2165 template segment<T, 3> scale<T>(const T& dx, const T& dy, const T& dz, \ 2166 const segment<T, 3>& segment); \ 2167 template triangle<T, 3> scale<T>(const T& dx, const T& dy, const T& dz, \ 2168 const triangle<T, 3>& triangle); \ 2169 template quadix<T, 3> scale<T>(const T& dx, const T& dy, const T& dz, \ 2170 const quadix<T, 3>& quadix); \ 2171 template box<T, 3> scale<T>(const T& dx, const T& dy, const T& dz, \ 2172 const box<T, 3>& box); \ 2173 template sphere<T> scale<T>(const T& dr, const sphere<T>& sphere); \ 2174 template polygon<T, 3> scale<T>(const T& dx, const T& dy, const T& dz, \ 2175 const polygon<T, 3>& polygon); \ 2176 template rectangle<T> aabb<T>(const segment<T, 2>& segment); \ 2177 template rectangle<T> aabb<T>(const triangle<T, 2>& triangle); \ 2178 template rectangle<T> aabb<T>(const rectangle<T>& rectangle); \ 2179 template rectangle<T> aabb<T>(const quadix<T, 2>& quadix); \ 2180 template rectangle<T> aabb<T>(const circle<T>& circle); \ 2181 template rectangle<T> aabb<T>(const polygon<T, 2>& polygon); \ 2182 template void aabb<T>(const segment<T, 2>& segment, T& x1, T& y1, T& x2, \ 2184 template void aabb<T>(const triangle<T, 2>& triangle, T& x1, T& y1, T& x2, \ 2186 template void aabb<T>(const rectangle<T>& rectangle, T& x1, T& y1, T& x2, \ 2188 template void aabb<T>(const quadix<T, 2>& quadix, T& x1, T& y1, T& x2, \ 2190 template void aabb<T>(const circle<T>& circle, T& x1, T& y1, T& x2, T& y2); \ 2191 template void aabb<T>(const polygon<T, 2>& polygon, T& x1, T& y1, T& x2, \ 2193 template box<T, 3> aabb<T>(const segment<T, 3>& segment); \ 2194 template box<T, 3> aabb<T>(const triangle<T, 3>& triangle); \ 2195 template box<T, 3> aabb<T>(const box<T, 3>& rectangle); \ 2196 template box<T, 3> aabb<T>(const quadix<T, 3>& quadix); \ 2197 template box<T, 3> aabb<T>(const sphere<T>& sphere); \ 2198 template box<T, 3> aabb<T>(const polygon<T, 3>& polygon); \ 2199 template void aabb<T>(const segment<T, 3>& segment, T& x1, T& y1, T& z1, \ 2200 T& x2, T& y2, T& z2); \ 2201 template void aabb<T>(const triangle<T, 3>& triangle, T& x1, T& y1, T& z1, \ 2202 T& x2, T& y2, T& z2); \ 2203 template void aabb<T>(const box<T, 3>& box, T& x1, T& y1, T& z1, T& x2, \ 2205 template void aabb<T>(const quadix<T, 3>& quadix, T& x1, T& y1, T& z1, \ 2206 T& x2, T& y2, T& z2); \ 2207 template void aabb<T>(const sphere<T>& sphere, T& x1, T& y1, T& z1, T& x2, \ 2209 template void aabb<T>(const polygon<T, 3>& polygon, T& x1, T& y1, T& z1, \ 2210 T& x2, T& y2, T& z2); \ 2211 template rectangle<T> update_rectangle<T>(const rectangle<T>& rectangle, \ 2212 point2d<T>& point); \ 2213 template box<T, 3> update_box<T>(const box<T, 3>& box, point3d<T>& point); \ 2214 template circle<T> update_circle<T>(const circle<T>& circle, \ 2215 point2d<T>& point); \ 2216 template sphere<T> update_sphere<T>(const sphere<T>& sphere, \ 2217 point3d<T>& point); \ 2218 template point2d<T> generate_point_on_segment<T>( \ 2219 const segment<T, 2>& segment, const T& t); \ 2220 template point3d<T> generate_point_on_segment<T>( \ 2221 const segment<T, 3>& segment, const T& t); \ 2222 template point2d<T> generate_point_on_ray<T>(const ray<T, 2>& ray, \ 2224 template point3d<T> generate_point_on_ray<T>(const ray<T, 3>& ray, \ 2226 template T generate_random_value<T>(const T& range); \ 2227 template point2d<T> generate_random_point<T>(const T& dx, const T& dy); \ 2228 template point3d<T> generate_random_point<T>(const T& dx, const T& dy, \ 2230 template point2d<T> generate_random_point<T>(const segment<T, 2>& segment); \ 2231 template point3d<T> generate_random_point<T>(const segment<T, 3>& segment); \ 2232 template point2d<T> generate_random_point<T>( \ 2233 const triangle<T, 2>& triangle); \ 2234 template point3d<T> generate_random_point<T>( \ 2235 const triangle<T, 3>& triangle); \ 2236 template point2d<T> generate_random_point<T>(const quadix<T, 2>& quadix); \ 2237 template point3d<T> generate_random_point<T>(const quadix<T, 3>& quadix); \ 2238 template point2d<T> generate_random_point<T>(const rectangle<T>& rectangle); \ 2239 template point3d<T> generate_random_point<T>(const box<T, 3>& box); \ 2240 template void generate_random_points<T>( \ 2241 const T& x1, const T& y1, const T& x2, const T& y2, \ 2242 const std::size_t& point_count, OutputIterator2d out); \ 2243 template void generate_random_points<T>(const rectangle<T>& rectangle, \ 2244 const std::size_t& point_count, \ 2245 OutputIterator2d out); \ 2246 template void generate_random_points<T>(const segment<T, 2>& segment, \ 2247 const std::size_t& point_count, \ 2248 OutputIterator2d out); \ 2249 template void generate_random_points<T>(const segment<T, 3>& segment, \ 2250 const std::size_t& point_count, \ 2251 OutputIterator2d out); \ 2252 template void generate_random_points<T>(const triangle<T, 2>& triangle, \ 2253 const std::size_t& point_count, \ 2254 OutputIterator2d out); \ 2255 template void generate_random_points<T>(const triangle<T, 3>& triangle, \ 2256 const std::size_t& point_count, \ 2257 OutputIterator2d out); \ 2258 template void generate_random_points<T>(const quadix<T, 2>& quadix, \ 2259 const std::size_t& point_count, \ 2260 OutputIterator2d out); \ 2261 template void generate_random_points<T>(const quadix<T, 3>& quadix, \ 2262 const std::size_t& point_count, \ 2263 OutputIterator2d out); \ 2264 template void generate_random_points<T>(const circle<T>& circle, \ 2265 const std::size_t& point_count, \ 2266 OutputIterator2d out); \ 2267 template void generate_random_object<T>(const T& x1, const T& y1, \ 2268 const T& x2, const T& y2, \ 2269 segment<T, 2>& segment); \ 2270 template void generate_random_object<T>(const T& x1, const T& y1, \ 2271 const T& x2, const T& y2, \ 2272 rectangle<T>& rectangle); \ 2273 template void generate_random_object<T>(const T& x1, const T& y1, \ 2274 const T& x2, const T& y2, \ 2275 triangle<T, 2>& triangle); \ 2276 template void generate_random_object<T>(const T& x1, const T& y1, \ 2277 const T& x2, const T& y2, \ 2278 quadix<T, 2>& quadix); \ 2279 template void generate_random_object<T>( \ 2280 const T& x1, const T& y1, const T& x2, const T& y2, circle<T>& circle); \ 2281 template void generate_random_object<T>( \ 2282 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 2283 const T& z2, box<T, 3>& box); \ 2284 template triangle<T, 2> right_shift<T>(const triangle<T, 2>& triangle, \ 2285 const std::size_t& shift); \ 2286 template triangle<T, 3> right_shift<T>(const triangle<T, 3>& triangle, \ 2287 const std::size_t& shift); \ 2288 template quadix<T, 2> right_shift<T>(const quadix<T, 2>& quadix, \ 2289 const std::size_t& shift); \ 2290 template quadix<T, 3> right_shift<T>(const quadix<T, 3>& quadix, \ 2291 const std::size_t& shift); \ 2292 template T vector_norm<T>(const vector2d<T>& v); \ 2293 template T vector_norm<T>(const vector3d<T>& v); \ 2294 template vector2d<T> normalize<T>(const vector2d<T>& v); \ 2295 template vector3d<T> normalize<T>(const vector3d<T>& v); \ 2296 template vector2d<T> perpendicular<T>(const vector2d<T>& v); \ 2297 template vector3d<T> perpendicular<T>(const vector3d<T>& v); \ 2298 template vector2d<T> operator+ \ 2299 <T>(const vector2d<T>& v1, const vector2d<T>& v2); \ 2300 template vector3d<T> operator+ \ 2301 <T>(const vector3d<T>& v1, const vector3d<T>& v2); \ 2302 template vector2d<T> operator- \ 2303 <T>(const vector2d<T>& v1, const vector2d<T>& v2); \ 2304 template vector3d<T> operator- \ 2305 <T>(const vector3d<T>& v1, const vector3d<T>& v2); \ 2306 template T operator*<T>(const vector2d<T>& v1, const vector2d<T>& v2); \ 2307 template vector3d<T> operator* \ 2308 <T>(const vector3d<T>& v1, const vector3d<T>& v2); \ 2309 template T dot_product<T>(const vector2d<T>& v1, const vector2d<T>& v2); \ 2310 template T dot_product<T>(const vector3d<T>& v1, const vector3d<T>& v2); \ 2311 template T perpendicular_product<T>(const vector2d<T>& v1, \ 2312 const vector2d<T>& v2); \ 2313 template T triple_product<T>(const vector3d<T>& v1, const vector3d<T>& v2, \ 2314 const vector3d<T>& v3); \ 2315 template vector2d<T> operator*<T>(const vector2d<T>& v1, const T& scale); \ 2316 template vector3d<T> operator*<T>(const vector3d<T>& v1, const T& scale); \ 2317 template vector2d<T> operator*<T>(const T& scale, const vector2d<T>& v1); \ 2318 template vector3d<T> operator*<T>(const T& scale, const vector3d<T>& v1); \ 2319 template point2d<T> operator*<T>(const point2d<T>& point, const T& scale); \ 2320 template point3d<T> operator*<T>(const point3d<T>& point, const T& scale); \ 2321 template point2d<T> operator*<T>(const T& scale, const point2d<T>& point); \ 2322 template point3d<T> operator*<T>(const T& scale, const point3d<T>& point); \ 2323 template point2d<T> operator+ \ 2324 <T>(const point2d<T>& point, const vector2d<T>& v); \ 2325 template point2d<T> operator+ \ 2326 <T>(const vector2d<T>& v, const point2d<T>& point); \ 2327 template point3d<T> operator+ \ 2328 <T>(const point3d<T>& point, const vector3d<T>& v); \ 2329 template point3d<T> operator+ \ 2330 <T>(const vector3d<T>& v, const point3d<T>& point); \ 2331 template vector2d<T> operator- \ 2332 <T>(const point2d<T>& p1, const point2d<T>& p2); \ 2333 template vector3d<T> operator- \ 2334 <T>(const point3d<T>& p1, const point3d<T>& p2); \ 2335 template point2d<T> operator+ \ 2336 <T>(const point2d<T>& p1, const point2d<T>& p2); \ 2337 template point3d<T> operator+ \ 2338 <T>(const point3d<T>& p1, const point3d<T>& p2); \ 2339 template bool is_equal<T>(const T& val1, const T& val2, const T& epsilon); \ 2340 template bool is_equal<T>(const point2d<T>& point1, \ 2341 const point2d<T>& point2, const T& epsilon); \ 2342 template bool is_equal<T>(const point3d<T>& point1, \ 2343 const point3d<T>& point2, const T& epsilon); \ 2344 template bool is_equal<T>(const T& val1, const T& val2); \ 2345 template bool is_equal<T>(const point2d<T>& point1, \ 2346 const point2d<T>& point2); \ 2347 template bool is_equal<T>(const point3d<T>& point1, \ 2348 const point3d<T>& point2); \ 2349 template bool is_equal<T>(const rectangle<T>& rectangle1, \ 2350 const rectangle<T>& rectangle2); \ 2351 template bool is_equal<T>(const circle<T>& circle1, \ 2352 const circle<T>& circle2); \ 2353 template bool is_equal<T>(const box<T, 3>& box1, const box<T, 3>& box2); \ 2354 template bool is_equal<T>(const sphere<T>& sphere1, \ 2355 const sphere<T>& sphere2); \ 2356 template bool not_equal<T>(const T& val1, const T& val2, const T& epsilon); \ 2357 template bool not_equal<T>(const point2d<T>& point1, \ 2358 const point2d<T>& point2, const T& epsilon); \ 2359 template bool not_equal<T>(const point3d<T>& point1, \ 2360 const point3d<T>& point2, const T& epsilon); \ 2361 template bool not_equal<T>(const T& val1, const T& val2); \ 2362 template bool not_equal<T>(const point2d<T>& point1, \ 2363 const point2d<T>& point2); \ 2364 template bool not_equal<T>(const point3d<T>& point1, \ 2365 const point3d<T>& point2); \ 2366 template bool less_than_or_equal<T>(const T& val1, const T& val2, \ 2367 const T& epsilon); \ 2368 template bool less_than_or_equal<T>(const T& val1, const T& val2); \ 2369 template bool greater_than_or_equal<T>(const T& val1, const T& val2, \ 2370 const T& epsilon); \ 2371 template bool greater_than_or_equal<T>(const T& val1, const T& val2); \ 2372 template bool operator< <T>(const point2d<T>& point1, \ 2373 const point2d<T>& point2); \ 2374 template bool operator< <T>(const point3d<T>& point1, \ 2375 const point3d<T>& point2); \ 2376 template bool operator> \ 2377 <T>(const point2d<T>& point1, const point2d<T>& point2); \ 2378 template bool operator> \ 2379 <T>(const point3d<T>& point1, const point3d<T>& point2); \ 2380 template bool operator== \ 2381 <T>(const point2d<T>& point1, const point2d<T>& point2); \ 2382 template bool operator== \ 2383 <T>(const point3d<T>& point1, const point3d<T>& point2); \ 2384 template bool is_degenerate<T>(const T& x1, const T& y1, const T& x2, \ 2386 template bool is_degenerate<T>(const segment<T, 2>& segment); \ 2387 template bool is_degenerate<T>(const line<T, 2>& line); \ 2388 template bool is_degenerate<T>(const T& x1, const T& y1, const T& z1, \ 2389 const T& x2, const T& y2, const T& z2); \ 2390 template bool is_degenerate<T>(const segment<T, 3>& segment); \ 2391 template bool is_degenerate<T>(const line<T, 3>& line); \ 2392 template bool is_degenerate<T>(const triangle<T, 2>& triangle); \ 2393 template bool is_degenerate<T>(const triangle<T, 3>& triangle); \ 2394 template bool is_degenerate<T>(const quadix<T, 2>& quadix); \ 2395 template bool is_degenerate<T>(const quadix<T, 3>& quadix); \ 2396 template bool is_degenerate<T>(const rectangle<T>& rectangle); \ 2397 template bool is_degenerate<T>(const circle<T>& circle); \ 2398 template bool is_degenerate<T>(const sphere<T>& sphere); \ 2399 template bool is_degenerate<T>(const circular_arc<T>& arc); \ 2400 template point2d<T> degenerate_point2d<T>(); \ 2401 template point3d<T> degenerate_point3d<T>(); \ 2402 template vector2d<T> degenerate_vector2d<T>(); \ 2403 template vector3d<T> degenerate_vector3d<T>(); \ 2404 template ray<T, 2> degenerate_ray2d<T>(); \ 2405 template ray<T, 3> degenerate_ray3d<T>(); \ 2406 template line<T, 2> degenerate_line2d<T>(); \ 2407 template line<T, 3> degenerate_line3d<T>(); \ 2408 template segment<T, 2> degenerate_segment2d<T>(); \ 2409 template segment<T, 3> degenerate_segment3d<T>(); \ 2410 template triangle<T, 2> degenerate_triangle2d<T>(); \ 2411 template triangle<T, 3> degenerate_triangle3d<T>(); \ 2412 template quadix<T, 2> degenerate_quadix2d<T>(); \ 2413 template quadix<T, 3> degenerate_quadix3d<T>(); \ 2414 template rectangle<T> degenerate_rectangle<T>(); \ 2415 template circle<T> degenerate_circle<T>(); \ 2416 template sphere<T> degenerate_sphere<T>(); \ 2417 template point2d<T> positive_infinite_point2d<T>(); \ 2418 template point2d<T> negative_infinite_point2d<T>(); \ 2419 template point3d<T> positive_infinite_point3d<T>(); \ 2420 template point3d<T> negative_infinite_point3d<T>(); \ 2421 template point2d<T> make_point<T>(const T& x, const T& y); \ 2422 template point3d<T> make_point<T>(const T& x, const T& y, const T& z); \ 2423 template point2d<T> make_point<T>(const point3d<T> point); \ 2424 template point3d<T> make_point<T>(const point2d<T> point, const T& z); \ 2425 template point2d<T> make_point<T>(const circle<T>& circle); \ 2426 template point3d<T> make_point<T>(const sphere<T>& sphere); \ 2427 template vector2d<T> make_vector<T>(const T& x, const T& y); \ 2428 template vector3d<T> make_vector<T>(const T& x, const T& y, const T& z); \ 2429 template vector2d<T> make_vector<T>(const vector3d<T> v); \ 2430 template vector3d<T> make_vector<T>(const vector2d<T> v, const T& z); \ 2431 template vector2d<T> make_vector<T>(const point2d<T> point); \ 2432 template vector3d<T> make_vector<T>(const point3d<T> point); \ 2433 template ray<T, 2> make_ray<T>(const T& ox, const T& oy, const T& dir_x, \ 2435 template ray<T, 3> make_ray<T>(const T& ox, const T& oy, const T& oz, \ 2436 const T& dir_x, const T& dir_y, \ 2438 template ray<T, 2> make_ray<T>(const point2d<T>& origin, \ 2439 const vector2d<T>& direction); \ 2440 template ray<T, 3> make_ray<T>(const point3d<T>& origin, \ 2441 const vector3d<T>& direction); \ 2442 template ray<T, 2> make_ray<T>(const point2d<T>& origin, const T& bearing); \ 2443 template curve_point<T, 2> make_curve_point<T>(const T& x, const T& y, \ 2445 template curve_point<T, 3> make_curve_point<T>(const T& x, const T& y, \ 2446 const T& z, const T& t); \ 2447 template curve_point<T, 2> make_curve_point<T>(const point2d<T>& point, \ 2449 template curve_point<T, 3> make_curve_point<T>(const point3d<T>& point, \ 2451 template segment<T, 2> make_segment<T>(const T& x1, const T& y1, \ 2452 const T& x2, const T& y2); \ 2453 template segment<T, 3> make_segment<T>(const T& x1, const T& y1, \ 2454 const T& z1, const T& x2, \ 2455 const T& y2, const T& z2); \ 2456 template segment<T, 2> make_segment<T>(const point2d<T>& point1, \ 2457 const point2d<T>& point2); \ 2458 template segment<T, 3> make_segment<T>(const point3d<T>& point1, \ 2459 const point3d<T>& point2); \ 2460 template segment<T, 2> make_segment<T>(const line<T, 2>& line); \ 2461 template segment<T, 3> make_segment<T>(const line<T, 3>& line); \ 2462 template line<T, 2> make_line<T>(const T& x1, const T& y1, const T& x2, \ 2464 template line<T, 3> make_line<T>(const T& x1, const T& y1, const T& z1, \ 2465 const T& x2, const T& y2, const T& z2); \ 2466 template line<T, 2> make_line<T>(const point2d<T>& point1, \ 2467 const point2d<T>& point2); \ 2468 template line<T, 3> make_line<T>(const point3d<T>& point1, \ 2469 const point3d<T>& point2); \ 2470 template line<T, 2> make_line<T>(const segment<T, 2>& segment); \ 2471 template line<T, 3> make_line<T>(const segment<T, 3>& segment); \ 2472 template line<T, 2> make_line<T>(const ray<T, 2>& ray); \ 2473 template line<T, 3> make_line<T>(const ray<T, 3>& ray); \ 2474 template rectangle<T> make_rectangle<T>(const T& x1, const T& y1, \ 2475 const T& x2, const T& y2); \ 2476 template rectangle<T> make_rectangle<T>(const point2d<T>& point1, \ 2477 const point2d<T>& point2); \ 2478 template box<T, 3> make_box<T>(const T& x1, const T& y1, const T& z1, \ 2479 const T& x2, const T& y2, const T& z2); \ 2480 template box<T, 3> make_box<T>(const point3d<T>& point1, \ 2481 const point3d<T>& point2); \ 2482 template triangle<T, 2> make_triangle<T>(const T& x1, const T& y1, \ 2483 const T& x2, const T& y2, \ 2484 const T& x3, const T& y3); \ 2485 template triangle<T, 3> make_triangle<T>( \ 2486 const T& x1, const T& y1, const T& z1, const T& x2, const T& y2, \ 2487 const T& z2, const T& x3, const T& y3, const T& z3); \ 2488 template triangle<T, 2> make_triangle<T>(const point2d<T>& point1, \ 2489 const point2d<T>& point2, \ 2490 const point2d<T>& point3); \ 2491 template triangle<T, 3> make_triangle<T>(const point3d<T>& point1, \ 2492 const point3d<T>& point2, \ 2493 const point3d<T>& point3); \ 2494 template quadix<T, 2> make_quadix<T>(const T& x1, const T& y1, const T& x2, \ 2495 const T& y2, const T& x3, const T& y3, \ 2496 const T& x4, const T& y4); \ 2497 template quadix<T, 3> make_quadix<T>(const T& x1, const T& y1, const T& z1, \ 2498 const T& x2, const T& y2, const T& z2, \ 2499 const T& x3, const T& y3, const T& z3, \ 2500 const T& x4, const T& y4, const T& z4); \ 2501 template quadix<T, 2> make_quadix<T>( \ 2502 const point2d<T>& point1, const point2d<T>& point2, \ 2503 const point2d<T>& point3, const point2d<T>& point4); \ 2504 template quadix<T, 3> make_quadix<T>( \ 2505 const point3d<T>& point1, const point3d<T>& point2, \ 2506 const point3d<T>& point3, const point3d<T>& point4); \ 2507 template quadix<T, 2> make_quadix<T>(const T& x1, const T& y1, const T& x2, \ 2509 template quadix<T, 2> make_quadix<T>(const rectangle<T>& rectangle); \ 2510 template circle<T> make_circle<T>(const T& x, const T& y, const T& radius); \ 2511 template circle<T> make_circle<T>(const point2d<T>& point, const T& radius); \ 2512 template circle<T> make_circle<T>(const point2d<T>& point1, \ 2513 const point2d<T>& point2); \ 2514 template circle<T> make_circle<T>(const point2d<T>& point1, \ 2515 const point2d<T>& point2, \ 2516 const point2d<T>& point3); \ 2517 template circle<T> make_circle<T>(const triangle<T, 2>& triangle); \ 2518 template sphere<T> make_sphere<T>(const T& x, const T& y, const T& z, \ 2520 template sphere<T> make_sphere<T>(const point3d<T>& point, const T& radius); \ 2521 template sphere<T> make_sphere<T>(const point3d<T>& point1, \ 2522 const point3d<T>& point2); \ 2523 template plane<T, 3> make_plane<T>(const T& x1, const T& y1, const T& z1, \ 2524 const T& x2, const T& y2, const T& z2, \ 2525 const T& x3, const T& y3, const T& z3); \ 2526 template plane<T, 3> make_plane<T>(const T& px, const T& py, const T& pz, \ 2527 const T& nx, const T& ny, const T& nz); \ 2528 template plane<T, 3> make_plane<T>(const point3d<T>& point1, \ 2529 const point3d<T>& point2, \ 2530 const point3d<T>& point3); \ 2531 template plane<T, 3> make_plane<T>(const point3d<T>& point, \ 2532 const vector3d<T>& normal); \ 2533 template plane<T, 3> make_plane<T>(const triangle<T, 3>& triangle); \ 2534 template polygon<T, 2> make_polygon<T>( \ 2535 const std::vector<point2d<T> >& point_list); \ 2536 template polygon<T, 3> make_polygon<T>( \ 2537 const std::vector<point3d<T> >& point_list); \ 2538 template polygon<T, 2> make_polygon<T>(const triangle<T, 2>& triangle); \ 2539 template polygon<T, 2> make_polygon<T>(const quadix<T, 2>& quadix); \ 2540 template polygon<T, 2> make_polygon<T>(const rectangle<T>& rectangle); \ 2541 template polygon<T, 2> make_polygon<T>(const circle<T>& circle, \ 2542 const unsigned int point_count); 2544 #define INSTANTIATE_WYKOBI_ND(T, D, OutputIterator) \ 2545 template bool parallel<T, D>(const line<T, D>& line1, \ 2546 const line<T, D>& line2); \ 2547 template bool parallel<T, D>(const segment<T, D>& segment1, \ 2548 const segment<T, D>& segment2); \ 2549 template bool collinear<T, D>(const pointnd<T, D>& point1, \ 2550 const pointnd<T, D>& point2, \ 2551 const pointnd<T, D>& point3); \ 2552 template bool robust_collinear<T, D>(const pointnd<T, D>& point1, \ 2553 const pointnd<T, D>& point2, \ 2554 const pointnd<T, D>& point3); \ 2555 template bool is_point_collinear<T, D>(const segment<T, D>& segment, \ 2556 const pointnd<T, D>& point, \ 2557 const bool robust); \ 2558 template bool perpendicular<T, D>(const line<T, D>& line1, \ 2559 const line<T, D>& line2); \ 2560 template bool perpendicular<T, D>(const segment<T, D>& segment1, \ 2561 const segment<T, D>& segment2); \ 2562 template bool intersect<T, D>(const segment<T, D>& segment1, \ 2563 const segment<T, D>& segment2, \ 2565 template bool intersect<T, D>(const line<T, D>& line1, \ 2566 const line<T, D>& line2, const T& fuzzy); \ 2567 template pointnd<T, D> intersection_point<T, D>( \ 2568 const segment<T, D>& segment1, const segment<T, D>& segment2, \ 2570 template pointnd<T, D> intersection_point<T, D>( \ 2571 const line<T, D>& line1, const line<T, D>& line2, const T& fuzzy); \ 2572 template T distance<T, D>(const pointnd<T, D>& point1, \ 2573 const pointnd<T, D>& point2); \ 2574 template T distance<T, D>(const pointnd<T, D>& point, \ 2575 const segment<T, D>& segment); \ 2576 template T distance<T, D>(const pointnd<T, D>& point, \ 2577 const line<T, D>& line); \ 2578 template T distance<T, D>(const segment<T, D>& segment1, \ 2579 const segment<T, D>& segment2); \ 2580 template T distance<T, D>(const line<T, D>& line1, const line<T, D>& line2); \ 2581 template T lay_distance<T, D>(const pointnd<T, D>& point1, \ 2582 const pointnd<T, D>& point2); \ 2583 template T lay_distance<T, D>(const pointnd<T, D>& point, \ 2584 const segment<T, D>& segment); \ 2585 template T lay_distance<T, D>(const pointnd<T, D>& point, \ 2586 const line<T, D>& line); \ 2587 template T lay_distance<T, D>(const segment<T, D>& segment1, \ 2588 const segment<T, D>& segment2); \ 2589 template T lay_distance<T, D>(const line<T, D>& line1, \ 2590 const line<T, D>& line2); \ 2591 template T manhattan_distance<T, D>(const pointnd<T, D>& point1, \ 2592 const pointnd<T, D>& point2); \ 2593 template T chebyshev_distance<T, D>(const pointnd<T, D>& point1, \ 2594 const pointnd<T, D>& point2); \ 2595 template T inverse_chebyshev_distance<T, D>(const pointnd<T, D>& point1, \ 2596 const pointnd<T, D>& point2); \ 2597 template bool point_in_box<T, D>(const pointnd<T, D>& point, \ 2598 const box<T, D>& box); \ 2599 template bool point_in_sphere<T, D>(const pointnd<T, D>& point, \ 2600 const hypersphere<T, D>& sphere); \ 2601 template pointnd<T, D> closest_point_on_segment_from_point<T, D>( \ 2602 const segment<T, D>& segment, \ 2603 const wykobi::segment<T, D>::PointType& point); \ 2604 template pointnd<T, D> closest_point_on_line_from_point<T, D>( \ 2605 const line<T, D>& segment, const wykobi::line<T, D>::PointType& point); \ 2606 template pointnd<T, D> closest_point_on_sphere_from_point<T, D>( \ 2607 const hypersphere<T, D>& sphere, \ 2608 const wykobi::hypersphere<T, D>::PointType& point); \ 2609 template pointnd<T, D> closest_point_on_plane_from_point<T, D>( \ 2610 const plane<T, D>& plane, const wykobi::plane<T, D>::PointType& point); \ 2611 template pointnd<T, D> closest_point_on_box_from_point<T, D>( \ 2612 const box<T, D>& box, const wykobi::box<T, D>::PointType& point); \ 2613 template pointnd<T, D> project_point_t<T, D>( \ 2614 const pointnd<T, D>& source_point, \ 2615 const pointnd<T, D>& destination_point, const T& t); \ 2616 template pointnd<T, D> project_point<T, D>( \ 2617 const pointnd<T, D>& source_point, \ 2618 const pointnd<T, D>& destination_point, const T& distance); \ 2619 template pointnd<T, D> mirror<T, D>(const pointnd<T, D>& point, \ 2620 const line<T, D>& mirror_axis); \ 2621 template segment<T, D> mirror<T, D>(const segment<T, D>& segment, \ 2622 const line<T, D>& mirror_axis); \ 2623 template line<T, D> mirror<T, D>(const line<T, D>& line, \ 2624 const wykobi::line<T, D>& mirror_axis); \ 2625 template box<T, D> mirror<T, D>(const box<T, D>& box, \ 2626 const line<T, D>& mirror_axis); \ 2627 template triangle<T, D> mirror<T, D>(const triangle<T, D>& triangle, \ 2628 const line<T, D>& mirror_axis); \ 2629 template quadix<T, D> mirror<T, D>(const quadix<T, D>& quadix, \ 2630 const line<T, D>& mirror_axis); \ 2631 template hypersphere<T, D> mirror<T, D>(const hypersphere<T, D>& sphere, \ 2632 const line<T, D>& mirror_axis); \ 2633 template polygon<T, D> mirror<T, D>(const polygon<T, D>& polygon, \ 2634 const line<T, D>& mirror_axis); \ 2635 template segment<T, D> project_onto_axis<T, D>(const pointnd<T, D>& point, \ 2636 const line<T, D>& axis); \ 2637 template segment<T, D> project_onto_axis<T, D>( \ 2638 const triangle<T, D>& triangle, const line<T, D>& axis); \ 2639 template segment<T, D> project_onto_axis<T, D>(const box<T, D>& rectangle, \ 2640 const line<T, D>& axis); \ 2641 template segment<T, D> project_onto_axis<T, D>(const quadix<T, D>& quadix, \ 2642 const line<T, D>& axis); \ 2643 template segment<T, D> project_onto_axis<T, D>( \ 2644 const hypersphere<T, D>& sphere, const line<T, D>& axis); \ 2645 template segment<T, D> project_onto_axis<T, D>(const polygon<T, D>& polygon, \ 2646 const line<T, D>& axis); \ 2647 template T perimeter<T, D>(const triangle<T, D>& triangle); \ 2648 template T perimeter<T, D>(const quadix<T, D>& quadix); \ 2649 template T perimeter<T, D>(const polygon<T, D>& polygon); \ 2650 template pointnd<T, D> generate_random_point<T, D>( \ 2651 const segment<T, D>& segment); \ 2652 template pointnd<T, D> generate_random_point<T, D>( \ 2653 const triangle<T, D>& triangle); \ 2654 template pointnd<T, D> generate_random_point<T, D>( \ 2655 const quadix<T, D>& quadix); \ 2656 template pointnd<T, D> generate_random_point<T, D>(const box<T, D>& box); \ 2657 template void generate_random_points<T, D, OutputIterator>( \ 2658 const box<T, D>& box, const std::size_t& point_count, \ 2659 OutputIterator out); \ 2660 template void generate_random_points<T, D, OutputIterator>( \ 2661 const segment<T, D>& segment, const std::size_t& point_count, \ 2662 OutputIterator out); \ 2663 template void generate_random_points<T, D, OutputIterator>( \ 2664 const triangle<T, D>& triangle, const std::size_t& point_count, \ 2665 OutputIterator out); \ 2666 template void generate_random_points<T, D, OutputIterator>( \ 2667 const quadix<T, D>& quadix, const std::size_t& point_count, \ 2668 OutputIterator out); \ 2669 template T vector_norm<T, D>(const vectornd<T, D>& v); \ 2670 template vectornd<T, D> normalize<T, D>(const vectornd<T, D>& v); \ 2671 template vectornd<T, D> operator+ \ 2672 <T, D>(const vectornd<T, D>& v1, const vectornd<T, D>& v2); \ 2673 template vectornd<T, D> operator- \ 2674 <T, D>(const vectornd<T, D>& v1, const vectornd<T, D>& v2); \ 2675 template T dot_product<T, D>(const vectornd<T, D>& v1, \ 2676 const vectornd<T, D>& v2); \ 2677 template vectornd<T, D> operator* \ 2678 <T, D>(const vectornd<T, D>& v1, const T& scale); \ 2679 template vectornd<T, D> operator* \ 2680 <T, D>(const T& scale, const vectornd<T, D>& v1); \ 2681 template pointnd<T, D> operator* \ 2682 <T, D>(const pointnd<T, D>& point, const T& scale); \ 2683 template pointnd<T, D> operator* \ 2684 <T, D>(const T& scale, const pointnd<T, D>& point); \ 2685 template pointnd<T, D> operator+ \ 2686 <T, D>(const pointnd<T, D>& point, const vectornd<T, D>& v); \ 2687 template pointnd<T, D> operator+ \ 2688 <T, D>(const vectornd<T, D>& v, const pointnd<T, D>& point); \ 2689 template vectornd<T, D> operator- \ 2690 <T, D>(const pointnd<T, D>& p1, const pointnd<T, D>& p2); \ 2691 template pointnd<T, D> operator+ \ 2692 <T, D>(const pointnd<T, D>& p1, const pointnd<T, D>& p2); \ 2693 template bool operator< <T, D>(const pointnd<T, D>& point1, \ 2694 const pointnd<T, D>& point2); \ 2695 template bool operator> \ 2696 <T, D>(const pointnd<T, D>& point1, const pointnd<T, D>& point2); \ 2697 template bool operator== \ 2698 <T, D>(const pointnd<T, D>& point1, const pointnd<T, D>& point2); \ 2699 template bool is_equal<T, D>(const pointnd<T, D>& point1, \ 2700 const pointnd<T, D>& point2, const T& epsilon); \ 2701 template bool is_equal<T, D>(const pointnd<T, D>& point1, \ 2702 const pointnd<T, D>& point2); \ 2703 template bool not_equal<T, D>(const pointnd<T, D>& point1, \ 2704 const pointnd<T, D>& point2, \ 2705 const T& epsilon); \ 2706 template bool not_equal<T, D>(const pointnd<T, D>& point1, \ 2707 const pointnd<T, D>& point2); \ 2708 template pointnd<T, D> degenerate_pointnd<T, D>(); \ 2709 template vectornd<T, D> degenerate_vectornd<T, D>(); \ 2710 template ray<T, D> degenerate_raynd<T, D>(); \ 2711 template line<T, D> degenerate_linend<T, D>(); \ 2712 template segment<T, D> degenerate_segmentnd<T, D>(); \ 2713 template triangle<T, D> degenerate_trianglend<T, D>(); \ 2714 template quadix<T, D> degenerate_quadixnd<T, D>(); \ 2715 template box<T, D> degenerate_box<T, D>(); \ 2716 template hypersphere<T, D> degenerate_hypersphere<T, D>(); \ 2717 template pointnd<T, D> positive_infinite_pointnd<T, D>(); \ 2718 template pointnd<T, D> negative_infinite_pointnd<T, D>(); \ 2719 template void swap<T, D>(pointnd<T, D> & point1, pointnd<T, D> & point2); \ 2720 template vectornd<T, D> make_vector<T, D>(const pointnd<T, D>& point); \ 2721 template ray<T, D> make_ray<T, D>(const pointnd<T, D>& origin, \ 2722 const vectornd<T, D>& direction); \ 2723 template segment<T, D> make_segment<T, D>(const pointnd<T, D>& point1, \ 2724 const pointnd<T, D>& point2); \ 2725 template line<T, D> make_line<T, D>(const pointnd<T, D>& point1, \ 2726 const pointnd<T, D>& point2); \ 2727 template box<T, D> make_box<T, D>(const pointnd<T, D>& point1, \ 2728 const pointnd<T, D>& point2); \ 2729 template triangle<T, D> make_triangle<T, D>(const pointnd<T, D>& point1, \ 2730 const pointnd<T, D>& point2, \ 2731 const pointnd<T, D>& point3); \ 2732 template quadix<T, D> make_quadix<T, D>( \ 2733 const pointnd<T, D>& point1, const pointnd<T, D>& point2, \ 2734 const pointnd<T, D>& point3, const pointnd<T, D>& point4); \ 2735 template hypersphere<T, D> make_sphere<T, D>(const pointnd<T, D>& point, \ 2737 template hypersphere<T, D> make_sphere<T, D>(const pointnd<T, D>& point1, \ 2738 const pointnd<T, D>& point2); \ 2739 template polygon<T, D> make_polygon<T, D>( \ 2740 const std::vector<pointnd<T, D> >& point_list); \ 2741 template polygon<T, D> make_polygon<T, D>(const triangle<T, D>& triangle); \ 2742 template polygon<T, D> make_polygon<T, D>(const quadix<T, D>& quadix); 2744 #define INSTANTIATE_WYKOBI_MATH(T) \ 2745 template T sqr<T>(const T& val); \ 2746 template T abs<T>(const T& value); \ 2747 template T max<T>(const T& value1, const T& value2); \ 2748 template T min<T>(const T& value1, const T& value2); \ 2749 template T infinity<T>(); \ 2750 template T sin<T>(const T& value); \ 2751 template T cos<T>(const T& value); \ 2752 template T tan<T>(const T& value); \ 2753 template T atan<T>(const T& value); \ 2754 template T approx_sin<T>(T angle); \ 2755 template T approx_cos<T>(T angle); \ 2756 template T approx_tan<T>(T angle); \ 2757 template T clamp(const T& value, const T& low, const T& high); 2759 #define INSTANTIATE_WYKOBI_UTILITIES_1(T) \ 2760 template std::ostream& operator<< <T>(std::ostream& os, \ 2761 const point2d<T>& point); \ 2762 template std::ostream& operator<< <T>(std::ostream& os, \ 2763 const point3d<T>& point); \ 2764 template std::ostream& operator<< <T>(std::ostream& os, \ 2765 const ray<T, 2>& ray); \ 2766 template std::ostream& operator<< <T>(std::ostream& os, \ 2767 const ray<T, 3>& ray); \ 2768 template std::ostream& operator<< <T>(std::ostream& os, \ 2769 const vector2d<T>& v); \ 2770 template std::ostream& operator<< <T>(std::ostream& os, \ 2771 const vector3d<T>& v); \ 2772 template std::ostream& operator<< <T>(std::ostream& os, \ 2773 const circle<T>& circle); \ 2774 template std::ostream& operator<< <T>(std::ostream& os, \ 2775 const sphere<T>& sphere); \ 2776 template std::ostream& operator<< <T>(std::ostream& os, \ 2777 const rectangle<T>& rectangle); \ 2778 template std::ostream& operator<< <T>(std::ostream& os, const box<T, 3>& box); 2780 #define INSTANTIATE_WYKOBI_UTILITIES_2(T, D) \ 2781 template std::ostream& operator<< <T, D>(std::ostream& os, \ 2782 const segment<T, D>& segment); \ 2783 template std::ostream& operator<< <T, D>(std::ostream& os, \ 2784 const line<T, D>& line); \ 2785 template std::ostream& operator<< <T, D>(std::ostream& os, \ 2786 const triangle<T, D>& triangle); \ 2787 template std::ostream& operator<< <T, D>(std::ostream& os, \ 2788 const quadix<T, D>& quadix); 2790 #define INSTANTIATE_WYKOBI_ALGORITHMS(T, K) \ 2791 std::vector<point2d<T> > K##vec2d; \ 2792 std::vector<point3d<T> > K##vec3d; \ 2793 std::vector<circle<T> > K##clist; \ 2794 std::vector<segment<T, 2> > K##s2dlist; \ 2795 std::vector<segment<T, 3> > K##s3dlist; \ 2796 std::vector<triangle<T, 2> > K##t2dlist; \ 2797 rectangle<T> K##rect2d; \ 2798 polygon<T, 2> K##poly2d; \ 2799 circle<T> K##circle2d; \ 2800 sphere<T> K##sphere3d; \ 2802 algorithm::isotropic_normalization<point2d<T> > K##obj00(K##vec2d.begin(), \ 2804 algorithm::isotropic_normalization<point3d<T> > K##obj01(K##vec3d.begin(), \ 2806 algorithm::convex_hull_graham_scan<point2d<T> > K##obj02( \ 2807 K##vec2d.begin(), K##vec2d.end(), K##vec2d.begin()); \ 2808 algorithm::convex_hull_jarvis_march<point2d<T> > K##obj03( \ 2809 K##vec2d.begin(), K##vec2d.end(), K##vec2d.begin()); \ 2810 algorithm::convex_hull_melkman<point2d<T> > K##obj04( \ 2811 K##vec2d.begin(), K##vec2d.end(), K##vec2d.begin()); \ 2812 algorithm::covariance_matrix<point2d<T> > K##obj05; \ 2813 algorithm::covariance_matrix<point3d<T> > K##obj06; \ 2814 algorithm::ordered_polygon<point2d<T> > K##obj07( \ 2815 K##vec2d.begin(), K##vec2d.end(), K##vec2d.begin()); \ 2816 algorithm::naive_group_intersections<segment<T, 2> > K##obj08( \ 2817 K##s2dlist.begin(), K##s2dlist.end(), K##vec2d.begin()); \ 2818 algorithm::naive_group_intersections<segment<T, 3> > K##obj09( \ 2819 K##s3dlist.begin(), K##s3dlist.end(), K##vec3d.begin()); \ 2820 algorithm::naive_group_intersections<circle<T> > K##obj10( \ 2821 K##clist.begin(), K##clist.end(), K##vec2d.begin()); \ 2822 algorithm::naive_minimum_bounding_ball<point2d<T> > K##obj11( \ 2823 K##vec2d.begin(), K##vec2d.end(), K##circle2d); \ 2824 algorithm::naive_minimum_bounding_ball_with_ch_filter<point2d<T> > K##obj12( \ 2825 K##vec2d.begin(), K##vec2d.end(), K##circle2d); \ 2826 algorithm::randomized_minimum_bounding_ball<point2d<T> > K##obj13( \ 2827 K##vec2d.begin(), K##vec2d.end(), K##circle2d); \ 2828 algorithm::randomized_minimum_bounding_ball_with_ch_filter<point2d<T> > \ 2829 K##obj14(K##vec2d.begin(), K##vec2d.end(), K##circle2d); \ 2830 algorithm::ritter_minimum_bounding_ball<point2d<T> > K##obj15( \ 2831 K##vec2d.begin(), K##vec2d.end(), K##circle2d); \ 2832 algorithm::ritter_minimum_bounding_ball<point3d<T> > K##obj16( \ 2833 K##vec3d.begin(), K##vec3d.end(), K##sphere3d); \ 2834 algorithm::ritter_minimum_bounding_ball_with_ch_filter<point2d<T> > \ 2835 K##obj19(K##vec2d.begin(), K##vec2d.end(), K##circle2d); \ 2836 algorithm::generate_axis_projection_descriptor<T> K##obj20( \ 2837 K##poly2d, K##vec2d.begin()); \ 2838 algorithm::sutherland_hodgman_polygon_clipper<point2d<T> > K##obj21( \ 2839 K##rect2d, K##poly2d, K##poly2d); \ 2840 algorithm::polygon_triangulate<point2d<T> > K##obj23(K##poly2d, \ 2841 K##t2dlist.begin());
#define INSTANTIATE_WYKOBI_MATH(T)
Definition: wykobi_instantiate.hpp:2744
Definition: wykobi.hpp:74
#define INSTANTIATE_WYKOBI(T, InputIterator2d, InputIterator3d, OutputIterator2d, OutputIterator3d)
Definition: wykobi_instantiate.hpp:29
Definition: wykobi.hpp:32
#define INSTANTIATE_WYKOBI_UTILITIES_1(T)
Definition: wykobi_instantiate.hpp:2759
#define INSTANTIATE_WYKOBI_ALGORITHMS(T, K)
Definition: wykobi_instantiate.hpp:2790
Definition: wykobi.hpp:108
wykobi::point2d< float > * flt_pnt_2d
Definition: wykobi_instantiate.hpp:2843
wykobi::point3d< double > * dbl_pnt_3d
Definition: wykobi_instantiate.hpp:2847
wykobi::point2d< double > * dbl_pnt_2d
Definition: wykobi_instantiate.hpp:2844
#define INSTANTIATE_WYKOBI_UTILITIES_2(T, D)
Definition: wykobi_instantiate.hpp:2780
wykobi::point3d< float > * flt_pnt_3d
Definition: wykobi_instantiate.hpp:2846