20 #ifndef INCLUDE_WYKOBI
21 #define INCLUDE_WYKOBI
34 static const char VERSION_INFORMATION[] =
"Wykobi Version 0.0.5";
35 static const char AUTHOR_INFORMATION[] =
"Arash Partow";
36 static const char EPOCH_VERSION[] =
"C578AC5A:35A4123B:DF32F721";
70 template <
typename T, std::
size_t D>
73 template <
typename T = Float>
91 return ((0 == index) ?
x :
y);
94 return ((0 == index) ?
x :
y);
98 return ((0 == index) ?
x :
y);
101 return ((0 == index) ?
x :
y);
107 template <
typename T = Float>
138 inline reference value(
const std::size_t& index) {
165 template <
typename T, std::
size_t D>
177 pointnd(
const T& v0,
const T& v1,
const T& v2) {
182 pointnd(
const T& v0,
const T& v1,
const T& v2,
const T& v3) {
189 for (std::size_t i = 0; i < D; ++i)
v[i] = point.
v[i];
193 for (std::size_t i = 0; i < D; ++i)
v[i] = point[i];
197 for (std::size_t i = 0; i < D; ++i)
v[i] = point[i];
203 for (std::size_t i = 0; i < D; ++i)
v[i] = T(0.0);
207 if (
this == &point)
return *
this;
208 for (std::size_t i = 0; i < D; ++i)
v[i] = point.
v[i];
243 template <
typename T, std::
size_t Dimension>
249 template <
typename T>
255 template <
typename T>
262 template <
typename T, std::
size_t Dimension>
286 template <
typename T, std::
size_t Dimension>
310 template <
typename T, std::
size_t Dimension>
334 template <
typename T>
358 template <
typename T, std::
size_t Dimension>
382 template <
typename T, std::
size_t Dimension>
385 polygon(
const std::size_t initial_size = 0) : _data(initial_size) {}
393 std::vector<PointType> _data;
396 typedef typename std::vector<PointType>::iterator
iterator;
406 inline void reserve(
const std::size_t amount) { _data.reserve(amount); }
407 inline void clear()
const { _data.clear(); }
408 inline void clear() { _data.clear(); }
409 inline void erase(
const std::size_t index) {
410 _data.erase(_data.begin() + index);
412 inline std::size_t
size()
const {
return _data.size(); }
421 inline void reverse() { std::reverse(_data.begin(), _data.end()); }
425 template <
typename T>
432 template <
typename T>
439 template <
typename T, std::
size_t Dimension>
451 template <
typename T>
467 template <
typename T, std::
size_t Dimension>
492 template <
typename T, std::
size_t Dimension>
516 template <
typename T,
unsigned int Dimension, BezierType BType>
519 template <
typename T>
525 template <
typename T>
531 template <
typename T>
537 template <
typename T>
544 template <
typename T,
unsigned int Dimension, BezierType Type>
554 template <
typename T, std::
size_t Dimension>
578 template <
typename T, std::
size_t D>
581 template <
typename T>
584 vector2d(
const T& _x = T(0.0),
const T& _y = T(0.0)) {
596 template <
typename T>
599 vector3d(
const T& _x = T(0.0),
const T& _y = T(0.0),
const T& _z = T(0.0)) {
613 template <
typename T, std::
size_t D>
631 vectornd(
const T& v0,
const T& v1,
const T& v2,
const T& v3) {
639 for (std::size_t i = 0; i < D; ++i) (*
this)[i] = vec[i];
654 template <
typename T, std::
size_t Dimension>
660 template <
typename T>
666 template <
typename T>
673 template <
typename T, std::
size_t Dimension>
687 template <
typename T, std::
size_t Dimension>
701 template <
typename T, std::
size_t Dimension>
756 template <
typename T>
762 for (std::size_t i = 0; i < 360; ++i) {
763 sin_[i] = T(
std::sin((1.0 * i) * PIDiv180));
764 cos_[i] = T(
std::cos((1.0 * i) * PIDiv180));
765 tan_[i] = T(
std::tan((1.0 * i) * PIDiv180));
769 inline const T&
sin(
const unsigned int angle)
const {
return sin_[angle]; }
770 inline const T&
cos(
const unsigned int angle)
const {
return cos_[angle]; }
771 inline const T&
tan(
const unsigned int angle)
const {
return tan_[angle]; }
790 template <
typename T>
794 return static_cast<double>(Epsilon_Medium);
798 return static_cast<float>(Epsilon_Low);
801 template <
typename T>
802 inline int orientation(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
803 const T& px,
const T& py);
805 template <
typename T>
806 inline int orientation(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
807 const T& y2,
const T& z2,
const T& x3,
const T& y3,
808 const T& z3,
const T& px,
const T& py,
const T& pz);
810 template <
typename T>
812 const T& y2,
const T& px,
const T& py);
814 template <
typename T>
816 const T& x2,
const T& y2,
const T& z2,
817 const T& x3,
const T& y3,
const T& z3,
818 const T& px,
const T& py,
const T& pz);
820 template <
typename T>
822 const T& px,
const T& py);
824 template <
typename T>
828 template <
typename T>
831 template <
typename T>
834 template <
typename T>
837 template <
typename T>
839 const point3d<T>& point3,
const T& px,
const T& py,
842 template <
typename T>
846 template <
typename T>
849 template <
typename T>
851 const T& y2,
const T& p1x,
const T& p1y,
852 const T& p2x,
const T& p2y);
854 template <
typename T>
858 template <
typename T>
859 inline int in_circle(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
860 const T& x3,
const T& y3,
const T& px,
const T& py);
862 template <
typename T>
866 template <
typename T>
869 template <
typename T>
870 inline int in_sphere(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
871 const T& y2,
const T& z2,
const T& x3,
const T& y3,
872 const T& z3,
const T& x4,
const T& y4,
const T& z4,
873 const T& px,
const T& py,
const T& pz);
875 template <
typename T>
880 template <
typename T>
883 template <
typename T>
884 inline T
signed_area(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
885 const T& px,
const T& py);
887 template <
typename T>
889 const T& px,
const T& py);
891 template <
typename T>
895 template <
typename T>
898 template <
typename T>
900 const T& y2,
const T& z2,
const T& x3,
const T& y3,
901 const T& z3,
const T& px,
const T& py,
const T& pz);
903 template <
typename T>
905 const point3d<T>& point3,
const T& px,
const T& py,
908 template <
typename T>
912 template <
typename T>
915 template <
typename T>
916 inline bool collinear(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
917 const T& x3,
const T& y3,
const T&
epsilon = T(Epsilon));
919 template <
typename T>
920 inline bool collinear(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
921 const T& y2,
const T& z2,
const T& x3,
const T& y3,
922 const T& z3,
const T&
epsilon = T(Epsilon));
924 template <
typename T>
928 template <
typename T>
932 template <
typename T>
934 const T& x3,
const T& y3,
935 const T&
epsilon = T(Epsilon));
936 template <
typename T>
939 const T&
epsilon = T(Epsilon));
941 template <
typename T>
943 const T&
epsilon = T(Epsilon));
945 template <
typename T>
947 const T&
epsilon = T(Epsilon));
949 template <
typename T>
951 const T& y2,
const T& z2,
const T& x3,
const T& y3,
952 const T& z3,
const T&
epsilon = T(Epsilon));
953 template <
typename T>
956 const T&
epsilon = T(Epsilon));
958 template <
typename T>
960 const T& y2,
const T& px,
const T& py,
961 const bool robust =
false);
962 template <
typename T>
966 const bool robust =
false);
968 template <
typename T>
971 const T& py,
const bool robust =
false);
972 template <
typename T>
975 const bool robust =
false);
977 template <
typename T>
979 const T& x2,
const T& y2,
const T& z2,
980 const T& px,
const T& py,
const T& pz,
981 const bool robust =
false);
983 template <
typename T>
987 const bool robust =
false);
989 template <
typename T>
992 const bool robust =
false);
994 template <
typename T>
997 const T&
epsilon = T(Epsilon));
999 template <
typename T>
1001 template <
typename T>
1004 template <
typename T>
1006 template <
typename T>
1009 template <
typename T>
1012 template <
typename T>
1013 inline bool cocircular(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
1014 const T& x3,
const T& y3,
const T& x4,
const T& y4,
1015 const T&
epsilon = T(Epsilon));
1017 template <
typename T>
1020 const T&
epsilon = T(Epsilon));
1022 template <
typename T>
1024 const T&
epsilon = T(Epsilon));
1026 template <
typename T>
1028 const T&
epsilon = T(Epsilon));
1030 template <
typename T>
1032 const T& y2,
const T& x3,
const T& y3);
1034 template <
typename T>
1039 template <
typename T>
1042 template <
typename T>
1043 inline bool intersect(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
1044 const T& x3,
const T& y3,
const T& x4,
const T& y4);
1046 template <
typename T>
1047 inline bool intersect(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
1048 const T& x3,
const T& y3,
const T& x4,
const T& y4, T& ix,
1050 template <
typename T>
1054 template <
typename T>
1059 template <
typename T>
1063 template <
typename T>
1067 template <
typename T>
1071 template <
typename T>
1072 inline bool intersect(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
1073 const T& y2,
const T& z2,
const T& x3,
const T& y3,
1074 const T& z3,
const T& x4,
const T& y4,
const T& z4,
1075 const T& fuzzy = T(0.0));
1077 template <
typename T>
1080 const T& fuzzy = T(0.0));
1082 template <
typename T>
1085 template <
typename T>
1088 template <
typename T>
1091 template <
typename T>
1093 template <
typename T>
1095 template <
typename T>
1097 template <
typename T>
1100 const std::size_t& steps = 1000);
1101 template <
typename T>
1104 const std::size_t& steps = 1000);
1105 template <
typename T>
1107 const T& fuzzy = T(0.0));
1108 template <
typename T>
1110 template <
typename T>
1112 template <
typename T>
1114 template <
typename T>
1117 const std::size_t& steps = 1000);
1118 template <
typename T>
1121 const std::size_t& steps = 1000);
1122 template <
typename T>
1124 template <
typename T>
1126 template <
typename T>
1128 template <
typename T>
1130 template <
typename T>
1133 const std::size_t& steps = 1000);
1134 template <
typename T>
1136 const std::size_t& steps = 1000);
1137 template <
typename T>
1139 template <
typename T>
1141 template <
typename T>
1143 template <
typename T>
1146 const std::size_t& steps = 1000);
1147 template <
typename T>
1149 const std::size_t& steps = 1000);
1150 template <
typename T>
1152 template <
typename T>
1155 template <
typename T>
1158 const std::size_t& steps = 1000);
1159 template <
typename T>
1162 const std::size_t& steps = 1000);
1163 template <
typename T>
1166 template <
typename T>
1169 template <
typename T>
1171 template <
typename T>
1174 const std::size_t& steps = 1000);
1175 template <
typename T>
1178 const std::size_t& steps = 1000);
1179 template <
typename T>
1182 const std::size_t& steps = 1000);
1183 template <
typename T>
1186 const std::size_t& steps = 1000);
1187 template <
typename T>
1189 template <
typename T>
1192 const std::size_t& steps = 1000);
1193 template <
typename T>
1195 const std::size_t& steps = 1000);
1196 template <
typename T>
1198 template <
typename T>
1200 template <
typename T>
1203 const std::size_t& steps = 1000);
1204 template <
typename T>
1206 const std::size_t& steps = 1000);
1207 template <
typename T>
1209 template <
typename T>
1211 template <
typename T>
1213 template <
typename T>
1215 template <
typename T>
1217 template <
typename T>
1219 template <
typename T>
1221 template <
typename T>
1223 template <
typename T>
1225 template <
typename T>
1227 template <
typename T>
1229 template <
typename T>
1231 template <
typename T>
1233 template <
typename T>
1235 template <
typename T>
1237 template <
typename T>
1240 template <
typename T>
1242 const T& x3,
const T& y3,
const T& x4,
1245 template <
typename T>
1250 template <
typename T>
1254 template <
typename T>
1257 template <
typename T>
1260 template <
typename T>
1264 template <
typename T>
1266 const T& y2,
const T& x3,
const T& y3,
1267 const T& x4,
const T& y4, T& ix, T& iy);
1269 template <
typename T>
1275 template <
typename T>
1280 template <
typename T>
1284 template <
typename T>
1286 const T& x2,
const T& y2,
const T& z2,
1287 const T& x3,
const T& y3,
const T& z3,
1288 const T& x4,
const T& y4,
const T& z4, T& ix,
1289 T& iy, T& iz,
const T& fuzzy = T(0.0));
1291 template <
typename T>
1295 const point3d<T>& point4, T& ix, T& iy, T& iz,
1296 const T& fuzzy = T(0.0));
1298 template <
typename T>
1303 const T& fuzzy = T(0.0));
1305 template <
typename T>
1308 const T& fuzzy = T(0.0));
1310 template <
typename T>
1314 template <
typename T>
1317 const T& fuzzy = T(0.0));
1319 template <
typename T>
1323 template <
typename T,
typename OutputIterator>
1327 const std::size_t& steps = 1000);
1329 template <
typename T,
typename OutputIterator>
1333 const std::size_t& steps = 1000);
1335 template <
typename T,
typename OutputIterator>
1339 const std::size_t& steps = 1000);
1341 template <
typename T,
typename OutputIterator>
1345 const std::size_t& steps = 1000);
1347 template <
typename T>
1351 template <
typename T>
1354 const T& fuzzy = T(0.0));
1356 template <
typename T>
1361 template <
typename T,
typename OutputIterator>
1364 OutputIterator out);
1366 template <
typename T>
1371 template <
typename T>
1375 template <
typename T,
typename OutputIterator>
1377 const T& y2,
const T& cx,
const T& cy,
1378 const T& radius, OutputIterator out);
1380 template <
typename T,
typename OutputIterator>
1384 template <
typename T,
typename OutputIterator>
1386 OutputIterator out);
1388 template <
typename T,
typename OutputIterator>
1392 template <
typename T,
typename OutputIterator>
1394 OutputIterator out);
1396 template <
typename T>
1400 template <
typename T>
1404 template <
typename T>
1408 template <
typename T,
typename OutputIterator>
1410 OutputIterator out);
1412 template <
typename T,
typename OutputIterator>
1414 OutputIterator out);
1416 template <
typename T>
1418 const T& x1,
const T& y1,
const T& z1,
const T& x2,
const T& y2,
1419 const T& z2,
const T& x3,
const T& y3,
const T& z3,
const T& x4,
1420 const T& y4,
const T& z4, T& Ix, T& Iy, T& Iz,
const T& fuzzy = T(0.0));
1422 template <
typename T>
1425 template <
typename T>
1428 template <
typename T>
1431 template <
typename T>
1434 template <
typename T>
1437 template <
typename T>
1440 template <
typename T>
1442 const T& x3,
const T& y3);
1444 template <
typename T>
1448 template <
typename T>
1450 const T& y2,
const T& z2,
const T& x3,
const T& y3,
1453 template <
typename T>
1457 template <
typename T>
1459 const T& y2,
const T& x3,
const T& y3,
1461 template <
typename T>
1466 template <
typename T>
1469 template <
typename T>
1472 template <
typename T>
1475 template <
typename T>
1478 template <
typename T>
1481 template <
typename T>
1484 template <
typename T>
1488 template <
typename T>
1492 template <
typename T>
1493 inline bool parallel(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
1494 const T& x3,
const T& y3,
const T& x4,
const T& y4,
1495 const T&
epsilon = T(Epsilon));
1497 template <
typename T>
1500 const T&
epsilon = T(Epsilon));
1502 template <
typename T>
1505 const T&
epsilon = T(Epsilon));
1507 template <
typename T>
1509 const T&
epsilon = T(Epsilon));
1511 template <
typename T>
1512 inline bool parallel(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
1513 const T& y2,
const T& z2,
const T& x3,
const T& y3,
1514 const T& z3,
const T& x4,
const T& y4,
const T& z4,
1515 const T&
epsilon = T(Epsilon));
1517 template <
typename T>
1520 const T&
epsilon = T(Epsilon));
1522 template <
typename T>
1525 const T&
epsilon = T(Epsilon));
1527 template <
typename T>
1529 const T&
epsilon = T(Epsilon));
1531 template <
typename T>
1533 const T& x3,
const T& y3,
const T& x4,
const T& y4,
1534 const T&
epsilon = T(Epsilon));
1536 template <
typename T>
1539 const T&
epsilon = T(Epsilon));
1541 template <
typename T>
1544 const T&
epsilon = T(Epsilon));
1546 template <
typename T>
1548 const T&
epsilon = T(Epsilon));
1550 template <
typename T>
1553 const T&
epsilon = T(Epsilon));
1555 template <
typename T>
1557 const T& y2,
const T& z2,
const T& x3,
const T& y3,
1558 const T& z3,
const T& x4,
const T& y4,
const T& z4,
1559 const T&
epsilon = T(Epsilon));
1561 template <
typename T>
1564 const T&
epsilon = T(Epsilon));
1566 template <
typename T>
1569 const T&
epsilon = T(Epsilon));
1571 template <
typename T>
1573 const T&
epsilon = T(Epsilon));
1575 template <
typename T>
1578 const T&
epsilon = T(Epsilon));
1580 template <
typename T>
1582 const T& x3,
const T& y3,
const T& x4,
const T& y4,
1583 const T&
epsilon = T(Epsilon));
1585 template <
typename T>
1588 const T&
epsilon = T(Epsilon));
1590 template <
typename T>
1593 const T&
epsilon = T(Epsilon));
1595 template <
typename T>
1597 const T&
epsilon = T(Epsilon));
1599 template <
typename T>
1601 const T&
epsilon = T(Epsilon));
1603 template <
typename T>
1605 const T& y2,
const T& z2,
const T& x3,
const T& y3,
1606 const T& z3,
const T& x4,
const T& y4,
const T& z4,
1607 const T&
epsilon = T(Epsilon));
1609 template <
typename T>
1612 const T&
epsilon = T(Epsilon));
1614 template <
typename T>
1617 const T&
epsilon = T(Epsilon));
1619 template <
typename T>
1621 const T&
epsilon = T(Epsilon));
1623 template <
typename T>
1625 const T& y2,
const T& x3,
const T& y3,
1626 const T& x4,
const T& y4,
1627 const T&
epsilon = T(Epsilon));
1629 template <
typename T>
1634 const T&
epsilon = T(Epsilon));
1636 template <
typename T>
1639 const T&
epsilon = T(Epsilon));
1641 template <
typename T>
1644 const T&
epsilon = T(Epsilon));
1646 template <
typename T>
1648 const T& x2,
const T& y2,
const T& z2,
1649 const T& x3,
const T& y3,
const T& z3,
1650 const T& x4,
const T& y4,
const T& z4,
1651 const T&
epsilon = T(Epsilon));
1653 template <
typename T>
1658 const T&
epsilon = T(Epsilon));
1660 template <
typename T>
1663 const T&
epsilon = T(Epsilon));
1665 template <
typename T>
1668 const T&
epsilon = T(Epsilon));
1670 template <
typename T>
1673 const T&
epsilon = T(Epsilon));
1675 template <
typename T>
1677 const T& y2,
const T& x3,
const T& y3,
1678 const T& x4,
const T& y4);
1679 template <
typename T>
1683 template <
typename T>
1685 const T& x2,
const T& y2,
1686 const T& x3,
const T& y3,
1687 const T& x4,
const T& y4);
1689 template <
typename T>
1693 template <
typename T>
1695 const T& x2,
const T& y2,
const T& z2,
1696 const T& x3,
const T& y3,
const T& z3,
1697 const T& x4,
const T& y4,
const T& z4);
1699 template <
typename T>
1702 template <
typename T,
unsigned int Dimension,
typename Simplex,
typename Bezier>
1704 const Bezier& bezier,
1705 const std::size_t& steps);
1707 template <
typename T,
unsigned int Dimension,
typename Bezier,
1710 const Iterator& end,
1711 const Bezier& bezier,
1712 const std::size_t& steps);
1714 template <
typename T>
1716 const T& y2,
const T& x3,
const T& y3,
1717 const T& x4,
const T& y4);
1719 template <
typename T>
1723 template <
typename T>
1725 const T& y2,
const T& z2,
const T& x3,
const T& y3,
1726 const T& z3,
const T& x4,
const T& y4,
const T& z4);
1728 template <
typename T>
1731 template <
typename T>
1733 const T& x1,
const T& y1,
const T& x2,
1736 template <
typename T>
1740 template <
typename T>
1742 const T& y2,
const T& x3,
const T& y3,
1743 const T& x4,
const T& y4,
const T& x5,
1745 template <
typename T>
1749 template <
typename T>
1751 const T& y2,
const T& x3,
const T& y3,
1752 const T& x4,
const T& y4);
1754 template <
typename T>
1758 template <
typename T>
1760 const T& y2,
const T& x3,
const T& y3,
1761 const T& x4,
const T& y4,
const T& x5,
1762 const T& y5,
const T& x6,
const T& y6);
1764 template <
typename T>
1768 template <
typename T>
1772 template <
typename T>
1774 const T& radius,
const T& x1,
const T& y1,
1775 const T& z1,
const T& x2,
const T& y2,
1778 template <
typename T>
1781 template <
typename T>
1783 const T& x2,
const T& y2,
const T& z2,
1784 const T& x3,
const T& y3,
const T& z3,
1785 const T& x4,
const T& y4,
const T& z4,
1786 const T& x5,
const T& y5,
const T& z5);
1787 template <
typename T>
1791 template <
typename T>
1793 const T& x2,
const T& y2,
const T& z2,
1794 const T& x3,
const T& y3,
const T& z3,
1795 const T& x4,
const T& y4,
const T& z4);
1797 template <
typename T>
1801 template <
typename T>
1803 const T& x2,
const T& y2,
const T& z2,
1804 const T& x3,
const T& y3,
const T& z3,
1805 const T& x4,
const T& y4,
const T& z4,
1806 const T& x5,
const T& y5,
const T& z5,
1807 const T& x6,
const T& y6,
const T& z6);
1809 template <
typename T>
1812 template <
typename T>
1816 template <
typename T>
1820 template <
typename T>
1823 template <
typename T>
1825 const T& sy2,
const T& p1x,
const T& p1y,
1826 const T& p2x,
const T& p2y, T& rpx, T& rpy);
1827 template <
typename T>
1833 template <
typename T>
1835 const std::size_t& edge_index);
1836 template <
typename T>
1838 const std::size_t& edge_index);
1839 template <
typename T>
1841 const std::size_t& edge_index);
1842 template <
typename T>
1844 const std::size_t& edge_index);
1845 template <
typename T>
1847 const std::size_t&
edge);
1848 template <
typename T>
1850 const std::size_t&
edge);
1851 template <
typename T>
1853 const std::size_t&
edge);
1855 template <
typename T>
1857 const std::size_t& corner);
1858 template <
typename T>
1860 const std::size_t& corner);
1862 template <
typename T>
1864 template <
typename T>
1867 template <
typename T>
1869 const std::size_t& corner_index);
1870 template <
typename T>
1872 const std::size_t& corner_index);
1874 template <
typename T>
1876 const std::size_t& bisector);
1877 template <
typename T>
1879 const std::size_t& bisector);
1881 template <
typename T>
1884 const std::size_t& opposing_corner);
1886 template <
typename T>
1889 const std::size_t& opposing_corner);
1891 template <
typename T>
1893 const std::size_t& median);
1894 template <
typename T>
1896 const std::size_t& median);
1898 template <
typename T>
1900 const std::size_t& symmedian);
1901 template <
typename T>
1903 const std::size_t& symmedian);
1905 template <
typename T>
1907 template <
typename T>
1910 template <
typename T>
1912 const std::size_t& corner);
1913 template <
typename T>
1915 const std::size_t& corner);
1917 template <
typename T>
1920 template <
typename T>
1923 const std::size_t& median);
1925 template <
typename T>
1928 const std::size_t& median);
1930 template <
typename T>
1933 template <
typename T>
1937 template <
typename T>
1940 template <
typename T>
1944 template <
typename T>
1946 const T& y1,
const T& x2,
const T& y2);
1948 template <
typename T>
1950 const T& y1,
const T& x2,
const T& y2);
1952 template <
typename T>
1956 template <
typename T>
1960 template <
typename T>
1965 template <
typename T>
1969 template <
typename T>
1970 inline bool point_in_box(
const T& px,
const T& py,
const T& pz,
const T& x1,
1971 const T& y1,
const T& z1,
const T& x2,
const T& y2,
1974 template <
typename T>
1976 const T& z1,
const T& x2,
const T& y2,
const T& z2);
1978 template <
typename T>
1982 template <
typename T>
1985 template <
typename T>
1989 template <
typename T>
1992 template <
typename T>
1994 const T& y1,
const T& x2,
const T& y2,
1995 const T& x3,
const T& y3);
1996 template <
typename T>
2001 template <
typename T>
2005 template <
typename T>
2009 template <
typename T>
2011 const T& x2,
const T& y2,
const T& x3,
const T& y3,
2012 const T& x4,
const T& y4);
2014 template <
typename T>
2019 template <
typename T>
2022 template <
typename T>
2026 template <
typename T>
2030 template <
typename T>
2033 template <
typename T>
2036 template <
typename T>
2038 const T& cy,
const T& cz,
const T& radius);
2040 template <
typename T>
2044 template <
typename T>
2047 template <
typename T>
2049 const T& y1,
const T& x2,
const T& y2,
2050 const T& x3,
const T& y3);
2052 template <
typename T>
2058 template <
typename T>
2062 template <
typename T>
2064 const T& y1,
const T& x2,
const T& y2,
2065 const T& x3,
const T& y3);
2066 template <
typename T>
2072 template <
typename T>
2076 template <
typename T>
2080 template <
typename T>
2081 inline bool point_on_ray(
const T& px,
const T& py,
const T& ox,
const T& oy,
2082 const T& dx,
const T& dy);
2084 template <
typename T>
2085 inline bool point_on_ray(
const T& px,
const T& py,
const T& pz,
const T& ox,
2086 const T& oy,
const T& oz,
const T& dx,
const T& dy,
2089 template <
typename T>
2092 template <
typename T>
2095 template <
typename T>
2097 const T& y1,
const T& x2,
const T& y2);
2099 template <
typename T>
2101 const T& y1,
const T& x2,
const T& y2);
2103 template <
typename T>
2107 template <
typename T>
2111 template <
typename T>
2113 const T& y1,
const T& x2,
const T& y2,
2114 const T& x3,
const T& y3);
2115 template <
typename T>
2120 template <
typename T>
2124 template <
typename T>
2128 template <
typename T>
2130 const T& x2,
const T& y2,
const T& x3,
const T& y3,
2131 const T& x4,
const T& y4);
2133 template <
typename T>
2138 template <
typename T>
2141 template <
typename T>
2145 template <
typename T>
2149 template <
typename T>
2152 template <
typename T>
2155 template <
typename T>
2158 const std::size_t& steps = 1000,
2159 const T& fuzzy = T(Epsilon));
2161 template <
typename T>
2164 const std::size_t& steps = 1000,
2165 const T& fuzzy = T(Epsilon));
2167 template <
typename T>
2170 const std::size_t& steps = 1000,
2171 const T& fuzzy = T(Epsilon));
2173 template <
typename T>
2176 const std::size_t& steps = 1000,
2177 const T& fuzzy = T(Epsilon));
2179 template <
typename T>
2183 template <
typename T>
2187 template <
typename T>
2191 template <
typename T>
2194 template <
typename T>
2197 template <
typename T>
2199 const T& y2, T& x3, T& y3);
2201 template <
typename T>
2206 template <
typename T>
2208 const T& x2,
const T& y2);
2210 template <
typename T>
2214 template <
typename T>
2216 const T& side_length);
2217 template <
typename T>
2219 const point2d<T>& center_point,
const T& side_length);
2221 template <
typename T>
2225 template <
typename T>
2229 template <
typename T>
2233 template <
typename T>
2235 const T& angle1,
const T& angle2);
2237 template <
typename T>
2240 template <
typename T>
2243 template <
typename T>
2247 template <
typename T>
2250 template <
typename T>
2254 template <
typename T>
2257 template <
typename T>
2261 template <
typename T>
2265 template <
typename T>
2269 template <
typename T>
2273 template <
typename T>
2277 template <
typename T>
2279 template <
typename T>
2282 template <
typename T>
2284 template <
typename T>
2287 template <
typename T>
2291 template <
typename T>
2293 template <
typename T>
2296 template <
typename T>
2299 template <
typename T>
2303 template <
typename T>
2307 template <
typename T>
2309 template <
typename T>
2312 template <
typename T>
2314 template <
typename T>
2317 template <
typename T>
2320 template <
typename T>
2322 template <
typename T>
2325 template <
typename T>
2328 template <
typename T>
2332 template <
typename T>
2336 template <
typename T>
2340 template <
typename T>
2346 template <
typename T>
2348 const T& y2, T& x3, T& y3, T& x4, T& y4);
2350 template <
typename T>
2355 template <
typename T>
2357 const T& x2,
const T& y2);
2359 template <
typename T>
2363 template <
typename T>
2366 template <
typename T>
2368 const T& side_length);
2370 template <
typename T>
2372 const T& side_length);
2374 template <
typename T>
2376 const T& x3,
const T& y3, T& px, T& py);
2378 template <
typename T>
2383 template <
typename T>
2386 template <
typename T>
2388 const T& c1x,
const T& c1y,
const T& c1r,
2389 const T& c2x,
const T& c2y,
const T& c2r, T& px,
2392 template <
typename T>
2396 template <
typename T>
2397 inline void incenter(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
2398 const T& x3,
const T& y3, T& px, T& py);
2400 template <
typename T>
2401 inline void incenter(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
2402 const T& y2,
const T& z2,
const T& x3,
const T& y3,
2403 const T& z3, T& px, T& py, T& pz);
2405 template <
typename T>
2409 template <
typename T>
2413 template <
typename T>
2416 template <
typename T>
2419 template <
typename T>
2420 inline void circumcenter(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
2421 const T& x3,
const T& y3, T& px, T& py);
2423 template <
typename T>
2424 inline void circumcenter(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
2425 const T& y2,
const T& z2,
const T& x3,
const T& y3,
2426 const T& z3, T& px, T& py, T& pz);
2428 template <
typename T>
2433 template <
typename T>
2438 template <
typename T>
2441 template <
typename T>
2444 template <
typename T>
2446 const T& y2,
const T& x3,
const T& y3);
2448 template <
typename T>
2453 template <
typename T>
2456 template <
typename T>
2458 const T& x2,
const T& y2,
const T& z2,
2459 const T& x3,
const T& y3,
const T& z3);
2461 template <
typename T>
2466 template <
typename T>
2469 template <
typename T>
2471 const T& y2,
const T& x3,
const T& y3);
2473 template <
typename T>
2478 template <
typename T>
2481 template <
typename T>
2483 const T& x2,
const T& y2,
const T& z2,
2484 const T& x3,
const T& y3,
const T& z3);
2486 template <
typename T>
2491 template <
typename T>
2494 template <
typename T>
2496 const T& y2,
const T& x3,
const T& y3);
2498 template <
typename T>
2503 template <
typename T>
2506 template <
typename T>
2509 template <
typename T>
2512 template <
typename T>
2514 const std::size_t& corner);
2516 template <
typename T>
2518 const std::size_t& corner);
2520 template <
typename T>
2523 template <
typename T>
2526 template <
typename T>
2529 template <
typename T>
2533 template <
typename T>
2537 template <
typename T>
2542 template <
typename T>
2547 template <
typename T>
2552 template <
typename T>
2557 template <
typename T>
2562 template <
typename T>
2566 template <
typename T>
2568 const T& x2,
const T& y2,
2569 const T& x3,
const T& y3);
2571 template <
typename T>
2573 const T& x2,
const T& y2,
2574 const T& x3,
const T& y3);
2576 template <
typename T>
2578 const T& y2,
const T& x3,
2581 template <
typename T>
2583 const T& z1,
const T& x2,
2584 const T& y2,
const T& z2,
2585 const T& x3,
const T& y3,
2588 template <
typename T>
2590 const T& z1,
const T& x2,
2591 const T& y2,
const T& z2,
2592 const T& x3,
const T& y3,
2595 template <
typename T>
2597 const T& x2,
const T& y2,
const T& z2,
2598 const T& x3,
const T& y3,
2601 template <
typename T>
2605 template <
typename T>
2609 template <
typename T>
2613 template <
typename T>
2617 template <
typename T>
2621 template <
typename T>
2626 template <
typename T>
2628 const T& x2,
const T& y2);
2629 template <
typename T>
2632 template <
typename T>
2635 template <
typename T>
2639 template <
typename T>
2641 const T& x2,
const T& y2,
2642 const T& px,
const T& py, T& nx,
2645 template <
typename T>
2647 const T& x1,
const T& y1,
const T& z1,
const T& x2,
const T& y2,
2648 const T& z2,
const T& px,
const T& py,
const T& pz, T& nx, T& ny, T& nz);
2650 template <
typename T>
2652 const T& x2,
const T& y2,
2653 const T& px,
const T& py, T& nx,
2656 template <
typename T>
2658 const T& z1,
const T& x2,
2659 const T& y2,
const T& z2,
2660 const T& px,
const T& py,
2661 const T& pz, T& nx, T& ny, T& nz);
2663 template <
typename T>
2665 const T& x1,
const T& y1,
const T& x2,
const T& y2,
const T& px,
2666 const T& py, T& nx, T& ny);
2668 template <
typename T>
2670 const T& x1,
const T& y1,
const T& z1,
const T& x2,
const T& y2,
2671 const T& z2,
const T& px,
const T& py,
const T& pz, T& nx, T& ny, T& nz);
2673 template <
typename T>
2675 const T& x1,
const T& y1,
const T& x2,
const T& y2,
const T& px,
2676 const T& py, T& nx, T& ny);
2678 template <
typename T>
2680 const T& x1,
const T& y1,
const T& z1,
const T& x2,
const T& y2,
2681 const T& z2,
const T& px,
const T& py,
const T& pz, T& nx, T& ny, T& nz);
2683 template <
typename T>
2685 const T& dx,
const T& dy,
2686 const T& px,
const T& py, T& nx,
2689 template <
typename T>
2691 const T& oz,
const T& dx,
2692 const T& dy,
const T& dz,
2693 const T& px,
const T& py,
2694 const T& pz, T& nx, T& ny, T& nz);
2696 template <
typename T>
2698 const T& x2,
const T& y2,
2699 const T& px,
const T& py);
2701 template <
typename T>
2703 const T& z1,
const T& x2,
2704 const T& y2,
const T& z2,
2705 const T& px,
const T& py,
2708 template <
typename T>
2712 template <
typename T>
2716 template <
typename T>
2718 const T& x2,
const T& y2,
2719 const T& px,
const T& py);
2721 template <
typename T>
2723 const T& z1,
const T& x2,
2724 const T& y2,
const T& z2,
2725 const T& px,
const T& py,
2728 template <
typename T>
2732 template <
typename T>
2736 template <
typename T>
2738 const T& dx,
const T& dy,
2739 const T& px,
const T& py);
2741 template <
typename T>
2743 const T& oz,
const T& dx,
2744 const T& dy,
const T& dz,
2745 const T& px,
const T& py,
2748 template <
typename T>
2752 template <
typename T>
2756 template <
typename T>
2758 const T& x2,
const T& y2,
2759 const T& x3,
const T& y3,
2760 const T& px,
const T& py,
2763 template <
typename T>
2765 const T& x2,
const T& y2,
2766 const T& x3,
const T& y3,
2770 template <
typename T>
2774 template <
typename T>
2778 template <
typename T>
2780 const T& x1,
const T& y1,
const T& z1,
const T& x2,
const T& y2,
2781 const T& z2,
const T& x3,
const T& y3,
const T& z3,
const T& px,
2782 const T& py,
const T& pz, T& nx, T& ny, T& nz);
2784 template <
typename T>
2786 const T& x1,
const T& y1,
const T& z1,
const T& x2,
const T& y2,
2787 const T& z2,
const T& x3,
const T& y3,
const T& z3,
const T& px,
2788 const T& py,
const T& pz);
2790 template <
typename T>
2794 template <
typename T>
2798 template <
typename T>
2800 const T& x2,
const T& y2,
2801 const T& px,
const T& py,
2804 template <
typename T>
2806 const T& x1,
const T& y1,
const T& x2,
const T& y2,
const T& px,
2809 template <
typename T>
2813 template <
typename T>
2817 template <
typename T>
2819 const T& z1,
const T& x2,
2820 const T& y2,
const T& z2,
2821 const T& px,
const T& py,
2822 const T& pz, T& nx, T& ny, T& nz);
2824 template <
typename T>
2826 const T& z1,
const T& x2,
2827 const T& y2,
const T& z2,
2828 const T& px,
const T& py,
2831 template <
typename T>
2833 const T& px,
const T& py,
2836 template <
typename T>
2840 template <
typename T>
2842 const T& x2,
const T& y2,
2843 const T& x3,
const T& y3,
2844 const T& x4,
const T& y4,
2845 const T& px,
const T& py, T& nx,
2848 template <
typename T>
2850 const T& x2,
const T& y2,
2851 const T& x3,
const T& y3,
2852 const T& x4,
const T& y4,
2853 const T& px,
const T& py);
2854 template <
typename T>
2858 template <
typename T>
2862 template <
typename T>
2866 template <
typename T>
2870 template <
typename T>
2874 template <
typename T>
2878 template <
typename T>
2882 template <
typename T>
2885 const std::size_t& steps = 1000);
2887 template <
typename T>
2890 const std::size_t& steps = 1000);
2892 template <
typename T>
2895 const std::size_t& steps = 1000);
2897 template <
typename T>
2900 const std::size_t& steps = 1000);
2902 template <
typename T>
2906 template <
typename T>
2910 template <
typename T>
2914 template <
typename T>
2916 const T& x1,
const T& y1,
2917 const T& x2,
const T& y2);
2919 template <
typename T>
2921 const T& pz,
const T& x1,
2922 const T& y1,
const T& z1,
2923 const T& x2,
const T& y2,
2926 template <
typename T>
2930 template <
typename T>
2934 template <
typename T>
2936 const T& x1,
const T& y1,
2937 const T& x2,
const T& y2);
2939 template <
typename T>
2941 const T& pz,
const T& x1,
2942 const T& y1,
const T& z1,
2943 const T& x2,
const T& y2,
2946 template <
typename T>
2950 template <
typename T>
2954 template <
typename T>
2956 const T& x1,
const T& y1,
2957 const T& x2,
const T& y2,
2958 const T& x3,
const T& y3);
2960 template <
typename T>
2964 template <
typename T>
2966 const T& x1,
const T& y1,
2967 const T& x2,
const T& y2);
2969 template <
typename T>
2973 template <
typename T>
2975 const T& y2, T& midx, T& midy);
2977 template <
typename T>
2980 template <
typename T>
2984 template <
typename T>
2987 template <
typename T>
2989 const T& x2,
const T& y2,
const T& z2, T& midx,
2992 template <
typename T>
2996 template <
typename T>
3000 template <
typename T>
3003 template <
typename T>
3004 inline void centroid(
const T& x1,
const T& y1,
const T& x2,
const T& y2, T& x,
3007 template <
typename T>
3010 template <
typename T>
3013 template <
typename T>
3014 inline void centroid(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
3015 const T& x3,
const T& y3, T& x, T& y);
3017 template <
typename T>
3018 inline void centroid(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
3019 const T& y2,
const T& z2,
const T& x3,
const T& y3,
3020 const T& z3, T& x, T& y, T& z);
3022 template <
typename T>
3023 inline void centroid(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
3024 const T& x3,
const T& y3,
const T& x4,
const T& y4, T& x,
3027 template <
typename T>
3029 template <
typename T>
3031 template <
typename T>
3033 template <
typename T>
3035 template <
typename T>
3037 template <
typename T>
3040 template <
typename T>
3043 template <
typename T>
3046 template <
typename T>
3048 template <
typename T>
3050 template <
typename T>
3052 template <
typename T>
3054 template <
typename T>
3056 template <
typename T>
3059 template <
typename T>
3061 template <
typename T>
3064 template <
typename T>
3067 template <
typename T>
3071 template <
typename T>
3074 template <
typename T>
3078 template <
typename T>
3081 template <
typename T>
3085 template <
typename T>
3088 template <
typename T>
3092 template <
typename T>
3094 template <
typename T>
3097 template <
typename T>
3100 template <
typename T>
3104 template <
typename T,
typename InputIterator,
typename OutputIterator>
3106 const InputIterator end,
3107 OutputIterator out);
3109 template <
typename T>
3114 template <
typename T>
3118 template <
typename T>
3122 template <
typename T>
3126 template <
typename T>
3129 template <
typename T>
3131 template <
typename T>
3134 template <
typename T>
3136 template <
typename T>
3139 template <
typename T>
3141 template <
typename T>
3144 template <
typename T>
3147 template <
typename T>
3151 template <
typename T>
3154 template <
typename T>
3158 template <
typename T>
3159 inline void mirror(
const T& px,
const T& py,
const T& x1,
const T& y1,
3160 const T& x2,
const T& y2, T& nx, T& ny);
3162 template <
typename T>
3163 inline void mirror(
const T& px,
const T& py,
const T& pz,
const T& x1,
3164 const T& y1,
const T& z1,
const T& x2,
const T& y2,
3165 const T& z2, T& nx, T& ny, T& nz);
3167 template <
typename T>
3170 template <
typename T>
3173 template <
typename T>
3176 template <
typename T>
3179 template <
typename T>
3182 template <
typename T>
3185 template <
typename T>
3187 template <
typename T>
3191 template <
typename T>
3194 template <
typename T>
3197 template <
typename T>
3200 template <
typename T>
3202 template <
typename T>
3205 template <
typename T>
3208 template <
typename T>
3210 template <
typename T>
3214 template <
typename T>
3217 template <
typename T>
3220 template <
typename T>
3223 template <
typename T>
3225 template <
typename T>
3228 template <
typename T>
3231 template <
typename T>
3234 template <
typename T>
3238 template <
typename T>
3240 const T& y1,
const T& x2,
const T& y2,
3241 const T& ratio, T& nx, T& ny);
3243 template <
typename T>
3246 template <
typename T>
3250 template <
typename T>
3253 template <
typename T>
3257 template <
typename T>
3260 template <
typename T>
3263 template <
typename T>
3268 template <
typename T>
3271 template <
typename T>
3275 template <
typename T>
3278 template <
typename T>
3282 template <
typename T>
3286 template <
typename T>
3289 template <
typename T>
3294 template <
typename T>
3297 template <
typename T>
3301 template <
typename T>
3304 template <
typename T>
3308 template <
typename T>
3309 inline T
distance(
const T& x1,
const T& y1,
const T& x2,
const T& y2);
3310 template <
typename T>
3311 inline T
distance(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
3312 const T& y2,
const T& z2);
3313 template <
typename T>
3315 template <
typename T>
3317 template <
typename T>
3320 template <
typename T>
3323 template <
typename T>
3325 template <
typename T>
3327 template <
typename T>
3329 template <
typename T>
3331 template <
typename T>
3333 template <
typename T>
3335 template <
typename T>
3337 template <
typename T>
3339 template <
typename T>
3341 template <
typename T>
3343 template <
typename T>
3345 template <
typename T>
3347 template <
typename T>
3349 template <
typename T>
3351 template <
typename T>
3353 template <
typename T>
3355 template <
typename T>
3357 template <
typename T>
3359 template <
typename T>
3362 template <
typename T>
3365 template <
typename T>
3368 template <
typename T>
3370 template <
typename T>
3372 template <
typename T>
3374 template <
typename T>
3376 template <
typename T>
3379 template <
typename T>
3381 template <
typename T>
3383 const T& y2,
const T& z2);
3384 template <
typename T>
3386 template <
typename T>
3388 template <
typename T>
3390 template <
typename T>
3392 template <
typename T>
3394 template <
typename T>
3396 template <
typename T>
3398 template <
typename T>
3401 template <
typename T>
3404 template <
typename T>
3406 template <
typename T>
3408 template <
typename T>
3410 template <
typename T>
3413 template <
typename T>
3417 template <
typename T>
3419 template <
typename T>
3421 const T& y2,
const T& z2);
3422 template <
typename T>
3424 template <
typename T>
3426 template <
typename T>
3428 template <
typename T>
3430 template <
typename T>
3432 template <
typename T>
3434 template <
typename T>
3437 template <
typename T>
3439 template <
typename T>
3441 const T& y2,
const T& z2);
3442 template <
typename T>
3444 template <
typename T>
3446 template <
typename T>
3448 template <
typename T>
3450 template <
typename T>
3453 template <
typename T>
3456 template <
typename T>
3458 const T& x2,
const T& y2,
const T& z2);
3459 template <
typename T>
3462 template <
typename T>
3465 template <
typename T>
3467 template <
typename T>
3469 template <
typename T>
3473 template <
typename T>
3476 template <
typename T>
3479 template <
typename T>
3482 template <
typename T>
3485 template <
typename T>
3489 template <
typename T>
3492 template <
typename T>
3495 template <
typename T>
3498 template <
typename T>
3501 template <
typename T>
3504 template <
typename T>
3507 template <
typename T>
3511 template <
typename T>
3514 template <
typename T>
3517 template <
typename T>
3520 template <
typename T>
3523 template <
typename T>
3527 template <
typename T>
3530 template <
typename T>
3533 template <
typename T>
3536 template <
typename T>
3539 template <
typename T>
3542 template <
typename T>
3545 template <
typename T>
3549 template <
typename T>
3551 const T& y2,
const T& x3,
const T& y3,
3552 const T& x4,
const T& y4);
3554 template <
typename T>
3556 const T& x2,
const T& y2,
const T& z2,
3557 const T& x3,
const T& y3,
const T& z3,
3558 const T& x4,
const T& y4,
const T& z4);
3560 template <
typename T>
3562 const T& y2,
const T& x3,
const T& y3,
3563 const T& x4,
const T& y4);
3565 template <
typename T>
3567 const T& x2,
const T& y2,
const T& z2,
3568 const T& x3,
const T& y3,
const T& z3,
3569 const T& x4,
const T& y4,
const T& z4);
3571 template <
typename T>
3573 const T& y2,
const T& x3,
const T& y3,
3574 const T& x4,
const T& y4);
3576 template <
typename T>
3578 const T& x2,
const T& y2,
const T& z2,
3579 const T& x3,
const T& y3,
const T& z3,
3580 const T& x4,
const T& y4,
const T& z4);
3582 template <
typename T>
3584 const T& y2,
const T& x3,
const T& y3,
3585 const T& x4,
const T& y4);
3587 template <
typename T>
3589 const T& x2,
const T& y2,
const T& z2,
3590 const T& x3,
const T& y3,
const T& z3,
3591 const T& x4,
const T& y4,
const T& z4);
3593 template <
typename T>
3597 template <
typename T>
3601 template <
typename T>
3605 template <
typename T>
3609 template <
typename T>
3612 template <
typename T>
3615 template <
typename T>
3617 const T& desty,
const T& t, T& nx, T& ny);
3619 template <
typename T>
3621 const T& destx,
const T& desty,
const T& destz,
3622 const T& t, T& nx, T& ny, T& nz);
3624 template <
typename T>
3626 const T& desty,
const T& dist, T& nx, T& ny);
3628 template <
typename T>
3630 const T& destx,
const T& desty,
const T& destz,
3631 const T& dist, T& nx, T& ny, T& nz);
3633 template <
typename T>
3637 template <
typename T>
3640 template <
typename T>
3643 template <
typename T>
3646 template <
typename T>
3649 template <
typename T>
3652 template <
typename T>
3655 template <
typename T>
3658 template <
typename T>
3662 template <
typename T>
3667 template <
typename T>
3672 template <
typename T>
3677 template <
typename T>
3682 template <
typename T>
3686 template <
typename T>
3688 template <
typename T>
3690 template <
typename T>
3692 template <
typename T>
3694 template <
typename T>
3696 template <
typename T>
3698 template <
typename T>
3700 template <
typename T>
3703 template <
typename T>
3706 template <
typename T>
3708 const T& angle,
const T&
distance);
3709 template <
typename T>
3711 const T& angle,
const T&
distance);
3712 template <
typename T>
3715 template <
typename T>
3718 template <
typename T>
3720 const T& angle,
const T&
distance);
3722 template <
typename T>
3725 template <
typename T>
3728 template <
typename T>
3731 template <
typename T>
3734 template <
typename T>
3737 template <
typename T>
3741 template <
typename T>
3744 template <
typename T>
3747 template <
typename T>
3750 template <
typename T>
3753 template <
typename T>
3756 template <
typename T>
3760 template <
typename T>
3762 T& ax, T& bx, T& ay, T& by);
3763 template <
typename T>
3765 T& ax, T& bx, T& ay, T& by, T& az,
3767 template <
typename T>
3769 T& ax, T& bx, T& cx, T& ay, T& by,
3771 template <
typename T>
3773 T& ax, T& bx, T& cx, T& ay, T& by,
3774 T& cy, T& az, T& bz, T& cz);
3776 template <
typename T>
3781 template <
typename T>
3786 template <
typename T>
3791 template <
typename T>
3796 template <
typename T>
3798 const T& ax,
const T& bx,
const T& ay,
3799 const T& by,
const T& t);
3801 template <
typename T>
3803 const T& ax,
const T& bx,
const T& ay,
3804 const T& by,
const T& az,
const T& bz,
3807 template <
typename T>
3809 const T& ax,
const T& bx,
const T& cx,
3810 const T& ay,
const T& by,
const T& cy,
3813 template <
typename T>
3815 const T& ax,
const T& bx,
const T& cx,
3816 const T& ay,
const T& by,
const T& cy,
3817 const T& az,
const T& bz,
const T& cz,
3820 template <
typename T>
3825 template <
typename T>
3830 template <
typename T>
3835 template <
typename T>
3840 template <
typename T,
typename OutputIterator>
3843 const std::size_t& point_count = 1000);
3844 template <
typename T,
typename OutputIterator>
3847 const std::size_t& point_count = 1000);
3848 template <
typename T,
typename OutputIterator>
3851 const std::size_t& point_count = 1000);
3852 template <
typename T,
typename OutputIterator>
3855 const std::size_t& point_count = 1000);
3857 template <
typename T>
3859 const std::size_t& point_count);
3860 template <
typename T>
3862 const std::size_t& point_count);
3863 template <
typename T>
3865 const std::size_t& point_count);
3866 template <
typename T>
3868 const std::size_t& point_count);
3870 template <
typename T>
3872 template <
typename T>
3875 template <
typename T>
3877 const T& x,
const T& y);
3878 template <
typename T>
3880 const T& x,
const T& y,
const T& z);
3881 template <
typename T>
3883 const T& x,
const T& y);
3884 template <
typename T>
3886 const T& x,
const T& y);
3887 template <
typename T>
3889 const T& y,
const T& z);
3890 template <
typename T>
3893 template <
typename T>
3896 template <
typename T>
3898 const T& x,
const T& y);
3900 template <
typename T>
3903 template <
typename T>
3906 template <
typename T>
3909 template <
typename T>
3912 template <
typename T>
3915 template <
typename T>
3918 template <
typename T>
3921 template <
typename T>
3925 template <
typename T>
3927 template <
typename T>
3930 template <
typename T>
3933 template <
typename T>
3937 template <
typename T>
3939 template <
typename T>
3942 template <
typename T>
3945 template <
typename T>
3949 template <
typename T>
3952 template <
typename T>
3953 inline bool clip(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
3954 const T& x3,
const T& y3,
const T& x4,
const T& y4, T& cx1,
3955 T& cy1, T& cx2, T& cy2);
3957 template <
typename T>
3958 inline bool clip(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
3959 const T& y2,
const T& z2,
const T& x3,
const T& y3,
3960 const T& z3,
const T& x4,
const T& y4,
const T& z4, T& cx1,
3961 T& cy1, T& cz1, T& cx2, T& cy2, T& cz2);
3963 template <
typename T>
3966 template <
typename T>
3969 template <
typename T>
3972 template <
typename T>
3975 template <
typename T>
3978 template <
typename T>
3981 template <
typename T>
3984 template <
typename T>
3987 template <
typename T>
3989 template <
typename T>
3991 template <
typename T>
3993 template <
typename T>
3995 template <
typename T>
3997 template <
typename T>
3999 template <
typename T>
4002 template <
typename T>
4005 template <
typename T>
4008 template <
typename T>
4010 template <
typename T>
4012 template <
typename T>
4014 template <
typename T>
4016 template <
typename T>
4018 template <
typename T>
4020 template <
typename T>
4023 template <
typename T>
4024 inline void rotate(
const T& rotation_angle,
const T& x,
const T& y, T& nx,
4026 template <
typename T>
4027 inline void rotate(
const T& rotation_angle,
const T& x,
const T& y,
const T& ox,
4028 const T& oy, T& nx, T& ny);
4030 template <
typename T>
4032 template <
typename T>
4036 template <
typename T>
4039 template <
typename T>
4044 template <
typename T>
4047 template <
typename T>
4052 template <
typename T>
4054 template <
typename T>
4058 template <
typename T>
4061 template <
typename T>
4066 template <
typename T>
4068 const T& x,
const T& y, T& nx, T& ny);
4070 template <
typename T>
4072 const T& x,
const T& y,
const T& ox,
const T& oy, T& nx,
4075 template <
typename T>
4078 template <
typename T>
4083 template <
typename T>
4085 const int rotation_angle,
4087 template <
typename T>
4089 const int rotation_angle,
4093 template <
typename T>
4095 const int rotation_angle,
4097 template <
typename T>
4099 const int rotation_angle,
4103 template <
typename T>
4105 const int rotation_angle,
4107 template <
typename T>
4109 const int rotation_angle,
4113 template <
typename T>
4115 const int rotation_angle,
4117 template <
typename T>
4119 const int rotation_angle,
4123 template <
typename T>
4125 const int rz,
const T& x,
const T& y,
const T& z, T& nx,
4128 template <
typename T>
4130 const int rz,
const T& x,
const T& y,
const T& z,
4131 const T& ox,
const T& oy,
const T& oz, T& nx, T& ny,
4134 template <
typename T>
4136 const int ry,
const int rz,
4138 template <
typename T>
4140 const int ry,
const int rz,
4144 template <
typename T>
4146 const int ry,
const int rz,
4148 template <
typename T>
4150 const int ry,
const int rz,
4154 template <
typename T>
4156 const int ry,
const int rz,
4158 template <
typename T>
4160 const int ry,
const int rz,
4164 template <
typename T>
4166 const int ry,
const int rz,
4168 template <
typename T>
4170 const int ry,
const int rz,
4174 template <
typename T>
4176 const int ry,
const int rz,
4178 template <
typename T>
4180 const int ry,
const int rz,
4184 template <
typename T>
4186 template <
typename T>
4188 template <
typename T>
4191 template <
typename T>
4194 template <
typename T>
4197 template <
typename T>
4200 template <
typename T>
4202 template <
typename T>
4206 template <
typename T>
4208 template <
typename T>
4210 template <
typename T>
4212 template <
typename T>
4214 template <
typename T>
4216 template <
typename T>
4218 template <
typename T>
4220 template <
typename T>
4223 template <
typename T>
4225 template <
typename T>
4227 template <
typename T>
4230 template <
typename T>
4233 template <
typename T>
4235 template <
typename T>
4238 template <
typename T>
4240 template <
typename T>
4244 template <
typename T>
4247 template <
typename T>
4250 template <
typename T>
4253 template <
typename T>
4256 template <
typename T>
4259 template <
typename T>
4262 template <
typename T>
4265 template <
typename T>
4269 template <
typename T>
4271 template <
typename T>
4273 template <
typename T>
4275 template <
typename T>
4277 template <
typename T>
4279 template <
typename T>
4281 template <
typename T>
4283 template <
typename T>
4286 template <
typename T>
4288 template <
typename T>
4290 template <
typename T>
4293 template <
typename T>
4296 template <
typename T>
4298 template <
typename T>
4300 template <
typename T>
4302 template <
typename T>
4306 template <
typename T>
4308 template <
typename T>
4310 template <
typename T>
4313 template <
typename T>
4316 template <
typename T>
4318 template <
typename T>
4321 template <
typename T>
4323 template <
typename T>
4327 template <
typename T>
4330 template <
typename T>
4333 template <
typename T>
4336 template <
typename T>
4339 template <
typename T>
4342 template <
typename T>
4345 template <
typename T>
4347 template <
typename T>
4351 template <
typename T>
4353 template <
typename T>
4355 template <
typename T>
4357 template <
typename T>
4359 template <
typename T>
4361 template <
typename T>
4364 template <
typename T>
4366 template <
typename T>
4368 template <
typename T>
4370 template <
typename T>
4372 template <
typename T>
4374 template <
typename T>
4377 template <
typename T>
4379 template <
typename T>
4381 template <
typename T>
4383 template <
typename T>
4385 template <
typename T>
4387 template <
typename T>
4390 template <
typename T>
4393 template <
typename T>
4396 template <
typename T>
4399 template <
typename T>
4402 template <
typename T>
4405 template <
typename T>
4409 template <
typename T>
4412 template <
typename T>
4414 template <
typename T>
4416 template <
typename T>
4419 template <
typename T>
4422 template <
typename T>
4425 template <
typename T>
4427 template <
typename T>
4430 template <
typename T>
4433 template <
typename T>
4435 template <
typename T>
4437 template <
typename T>
4439 template <
typename T>
4441 template <
typename T>
4443 template <
typename T>
4445 template <
typename T>
4447 template <
typename T>
4449 template <
typename T>
4451 template <
typename T>
4454 template <
typename T,
typename OutputIterator>
4456 const T& y2,
const std::size_t& point_count,
4457 OutputIterator out);
4458 template <
typename T,
typename OutputIterator>
4460 const T& x2,
const T& y2,
const T& z2,
4461 const std::size_t& point_count,
4462 OutputIterator out);
4463 template <
typename T,
typename OutputIterator>
4465 const std::size_t& point_count,
4466 OutputIterator out);
4467 template <
typename T,
typename OutputIterator>
4469 const std::size_t& point_count,
4470 OutputIterator out);
4471 template <
typename T,
typename OutputIterator>
4473 const std::size_t& point_count,
4474 OutputIterator out);
4475 template <
typename T,
typename OutputIterator>
4477 const std::size_t& point_count,
4478 OutputIterator out);
4479 template <
typename T,
typename OutputIterator>
4481 const std::size_t& point_count,
4482 OutputIterator out);
4483 template <
typename T,
typename OutputIterator>
4485 const std::size_t& point_count,
4486 OutputIterator out);
4487 template <
typename T,
typename OutputIterator>
4489 const std::size_t& point_count,
4490 OutputIterator out);
4491 template <
typename T,
typename OutputIterator>
4493 const std::size_t& point_count,
4494 OutputIterator out);
4495 template <
typename T,
typename OutputIterator>
4497 const std::size_t& point_count,
4498 OutputIterator out);
4500 template <
typename T>
4503 template <
typename T>
4506 template <
typename T>
4509 template <
typename T>
4512 template <
typename T>
4515 template <
typename T>
4517 const T& x2,
const T& y2,
const T& z2,
4520 template <
typename T>
4522 const std::size_t& shift);
4524 template <
typename T>
4526 const std::size_t& shift);
4528 template <
typename T>
4530 const std::size_t& shift);
4532 template <
typename T>
4534 const std::size_t& shift);
4536 template <
typename T>
4538 template <
typename T>
4541 template <
typename T>
4543 template <
typename T>
4546 template <
typename T>
4548 template <
typename T>
4551 template <
typename T>
4553 template <
typename T>
4556 template <
typename T>
4558 template <
typename T>
4561 template <
typename T>
4563 template <
typename T>
4566 template <
typename T>
4568 template <
typename T>
4571 template <
typename T>
4573 template <
typename T>
4577 template <
typename T>
4579 template <
typename T>
4581 template <
typename T>
4583 template <
typename T>
4586 template <
typename T>
4588 template <
typename T>
4591 template <
typename T>
4593 template <
typename T>
4595 template <
typename T>
4597 template <
typename T>
4600 template <
typename T>
4602 template <
typename T>
4605 template <
typename T>
4607 template <
typename T>
4610 template <
typename T>
4612 template <
typename T>
4615 template <
typename T>
4617 template <
typename T>
4620 template <
typename T>
4622 template <
typename T>
4625 template <
typename T>
4629 template <
typename T>
4631 template <
typename T>
4633 template <
typename T>
4636 template <
typename T>
4639 template <
typename T>
4642 template <
typename T>
4644 template <
typename T>
4647 template <
typename T>
4649 template <
typename T>
4652 template <
typename T>
4656 template <
typename T>
4658 template <
typename T>
4660 template <
typename T>
4663 template <
typename T>
4666 template <
typename T>
4669 template <
typename T>
4671 template <
typename T>
4674 template <
typename T>
4676 template <
typename T>
4679 template <
typename T>
4682 template <
typename T>
4685 template <
typename T>
4687 template <
typename T>
4689 template <
typename T>
4691 template <
typename T>
4694 template <
typename T>
4696 template <
typename T>
4699 template <
typename T>
4701 template <
typename T>
4703 template <
typename T>
4706 template <
typename T>
4708 const T& y2,
const T& z2);
4709 template <
typename T>
4711 template <
typename T>
4714 template <
typename T>
4716 template <
typename T>
4719 template <
typename T>
4721 template <
typename T>
4724 template <
typename T>
4726 template <
typename T>
4728 template <
typename T>
4730 template <
typename T>
4733 template <
typename T>
4735 template <
typename T>
4737 template <
typename T>
4739 template <
typename T>
4741 template <
typename T>
4743 template <
typename T>
4745 template <
typename T>
4747 template <
typename T>
4749 template <
typename T>
4751 template <
typename T>
4753 template <
typename T>
4755 template <
typename T>
4757 template <
typename T>
4759 template <
typename T>
4761 template <
typename T>
4763 template <
typename T>
4765 template <
typename T>
4768 template <
typename T>
4770 template <
typename T>
4772 template <
typename T>
4774 template <
typename T>
4777 template <
typename T>
4779 template <
typename T>
4782 template <
typename T>
4784 template <
typename T>
4787 template <
typename T>
4789 template <
typename T>
4792 template <
typename T>
4794 template <
typename T>
4797 template <
typename T>
4799 template <
typename T>
4802 template <
typename T>
4804 template <
typename T>
4807 template <
typename T>
4809 template <
typename T>
4812 template <
typename T>
4815 template <
typename T>
4817 const T& dir_y,
const T& dir_z);
4819 template <
typename T>
4822 template <
typename T>
4826 template <
typename T>
4829 template <
typename T>
4831 template <
typename T>
4835 template <
typename T>
4837 template <
typename T>
4840 template <
typename T>
4843 template <
typename T>
4845 const T& x2,
const T& y2,
const T& z2);
4847 template <
typename T>
4850 template <
typename T>
4854 template <
typename T>
4856 template <
typename T>
4859 template <
typename T>
4861 template <
typename T>
4863 const T& y2,
const T& z2);
4865 template <
typename T>
4867 template <
typename T>
4870 template <
typename T>
4872 template <
typename T>
4875 template <
typename T>
4877 template <
typename T>
4880 template <
typename T>
4883 template <
typename T>
4887 template <
typename T>
4889 const T& y2,
const T& z2);
4890 template <
typename T>
4893 template <
typename T>
4895 const T& y2,
const T& x3,
const T& y3);
4897 template <
typename T>
4899 const T& x2,
const T& y2,
const T& z2,
4900 const T& x3,
const T& y3,
const T& z3);
4902 template <
typename T>
4906 template <
typename T>
4911 template <
typename T>
4913 const T& y2,
const T& x3,
const T& y3,
4914 const T& x4,
const T& y4);
4916 template <
typename T>
4918 const T& x2,
const T& y2,
const T& z2,
4919 const T& x3,
const T& y3,
const T& z3,
4920 const T& x4,
const T& y4,
const T& z4);
4922 template <
typename T>
4927 template <
typename T>
4933 template <
typename T>
4936 template <
typename T>
4939 template <
typename T>
4941 template <
typename T>
4943 template <
typename T>
4946 template <
typename T>
4949 template <
typename T>
4952 template <
typename T>
4955 template <
typename T>
4957 template <
typename T>
4961 template <
typename T>
4963 const T& x2,
const T& y2,
const T& z2,
4964 const T& x3,
const T& y3,
const T& z3);
4966 template <
typename T>
4968 const T& nx,
const T& ny,
const T& nz);
4970 template <
typename T>
4974 template <
typename T>
4977 template <
typename T>
4980 template <
typename T, std::
size_t D,
typename InputIterator>
4982 const InputIterator end);
4984 template <
typename T>
4986 template <
typename T>
4989 template <
typename T>
4991 template <
typename T>
4993 template <
typename T>
4995 template <
typename T>
4997 const unsigned int point_count = 360);
5001 #include "wykobi.inl"
Definition: wykobi.hpp:702
PointType & reference
Definition: wykobi.hpp:711
const PointType & const_reference
Definition: wykobi.hpp:710
box()
Definition: wykobi.hpp:706
~box()
Definition: wykobi.hpp:707
static const std::size_t PointCount
Definition: wykobi.hpp:704
std::size_t size() const
Definition: wykobi.hpp:721
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:709
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:718
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:717
Definition: wykobi.hpp:426
T y
Definition: wykobi.hpp:428
T x
Definition: wykobi.hpp:428
T radius
Definition: wykobi.hpp:428
Definition: wykobi.hpp:452
T angle1
Definition: wykobi.hpp:458
T px
Definition: wykobi.hpp:457
T y2
Definition: wykobi.hpp:455
T x1
Definition: wykobi.hpp:454
T x2
Definition: wykobi.hpp:455
T cx
Definition: wykobi.hpp:456
T cy
Definition: wykobi.hpp:456
T py
Definition: wykobi.hpp:457
T angle2
Definition: wykobi.hpp:459
T y1
Definition: wykobi.hpp:454
int orientation
Definition: wykobi.hpp:460
Definition: wykobi.hpp:493
~cubic_bezier()
Definition: wykobi.hpp:499
const PointType & const_reference
Definition: wykobi.hpp:502
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:510
std::size_t size() const
Definition: wykobi.hpp:513
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:501
static const BezierType Type
Definition: wykobi.hpp:496
PointType & reference
Definition: wykobi.hpp:503
static const std::size_t PointCount
Definition: wykobi.hpp:495
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:509
cubic_bezier()
Definition: wykobi.hpp:498
Definition: wykobi.hpp:555
~curve_point()
Definition: wykobi.hpp:558
reference operator()()
Definition: wykobi.hpp:569
PointType & reference
Definition: wykobi.hpp:563
const_reference operator()() const
Definition: wykobi.hpp:570
const PointType & const_reference
Definition: wykobi.hpp:562
static const std::size_t PointCount
Definition: wykobi.hpp:560
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:561
std::size_t size() const
Definition: wykobi.hpp:571
T t
Definition: wykobi.hpp:573
curve_point()
Definition: wykobi.hpp:557
cubic_bezier< T, 2 > BezierType
Definition: wykobi.hpp:534
quadratic_bezier< T, 2 > BezierType
Definition: wykobi.hpp:522
cubic_bezier< T, 3 > BezierType
Definition: wykobi.hpp:540
quadratic_bezier< T, 3 > BezierType
Definition: wykobi.hpp:528
Definition: wykobi.hpp:517
point2d< T > PointType
Definition: wykobi.hpp:252
point3d< T > PointType
Definition: wykobi.hpp:258
Definition: wykobi.hpp:244
pointnd< T, Dimension > PointType
Definition: wykobi.hpp:246
vector2d< T > VectorType
Definition: wykobi.hpp:663
vector3d< T > VectorType
Definition: wykobi.hpp:669
Definition: wykobi.hpp:655
vectornd< T, Dimension > VectorType
Definition: wykobi.hpp:657
Definition: wykobi.hpp:47
Definition: wykobi.hpp:440
PointType & reference
Definition: wykobi.hpp:444
PointType center
Definition: wykobi.hpp:446
const PointType & const_reference
Definition: wykobi.hpp:443
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:442
T radius
Definition: wykobi.hpp:447
Definition: wykobi.hpp:287
PointType & reference
Definition: wykobi.hpp:296
const PointType & const_reference
Definition: wykobi.hpp:295
line()
Definition: wykobi.hpp:291
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:294
static const std::size_t PointCount
Definition: wykobi.hpp:289
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:302
~line()
Definition: wykobi.hpp:292
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:303
std::size_t size()
Definition: wykobi.hpp:306
Definition: wykobi.hpp:688
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:693
T constant
Definition: wykobi.hpp:696
VectorType normal
Definition: wykobi.hpp:697
~plane()
Definition: wykobi.hpp:691
define_vector_type< T, Dimension >::VectorType VectorType
Definition: wykobi.hpp:694
plane()
Definition: wykobi.hpp:690
Definition: wykobi.hpp:74
reference operator()(const std::size_t &index)
Definition: wykobi.hpp:90
T x
Definition: wykobi.hpp:104
T type
Definition: wykobi.hpp:76
point2d()
Definition: wykobi.hpp:80
const_reference operator()(const std::size_t &index) const
Definition: wykobi.hpp:93
type & reference
Definition: wykobi.hpp:78
point2d(const pointnd< T, 2 > &point)
Definition: wykobi.hpp:81
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:100
~point2d()
Definition: wykobi.hpp:82
const type & const_reference
Definition: wykobi.hpp:77
T y
Definition: wykobi.hpp:104
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:97
point2d< T > & operator=(const pointnd< T, 2 > &point)
Definition: wykobi.hpp:84
Definition: wykobi.hpp:108
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:130
T z
Definition: wykobi.hpp:135
point3d(const pointnd< T, 3 > &point)
Definition: wykobi.hpp:115
T x
Definition: wykobi.hpp:135
T y
Definition: wykobi.hpp:135
T Type
Definition: wykobi.hpp:110
~point3d()
Definition: wykobi.hpp:116
point3d()
Definition: wykobi.hpp:114
const_reference operator()(const std::size_t &index) const
Definition: wykobi.hpp:126
point3d< T > & operator=(const pointnd< T, 3 > &point)
Definition: wykobi.hpp:118
reference operator()(const std::size_t &index)
Definition: wykobi.hpp:125
Type & reference
Definition: wykobi.hpp:112
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:131
const Type & const_reference
Definition: wykobi.hpp:111
Definition: wykobi.hpp:166
pointnd(const point2d< T > &point)
Definition: wykobi.hpp:192
reference operator()(const std::size_t &index)
Definition: wykobi.hpp:229
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:235
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:234
void clear()
Definition: wykobi.hpp:202
pointnd< T, D > & operator=(const point3d< T > &point)
Definition: wykobi.hpp:220
pointnd(const T &v0)
Definition: wykobi.hpp:172
pointnd(const pointnd< T, D > &point)
Definition: wykobi.hpp:188
pointnd(const T &v0, const T &v1, const T &v2, const T &v3)
Definition: wykobi.hpp:182
pointnd< T, D > & operator=(const point2d< T > &point)
Definition: wykobi.hpp:212
const T & const_reference
Definition: wykobi.hpp:168
pointnd(const T &v0, const T &v1, const T &v2)
Definition: wykobi.hpp:177
const_reference operator()(const std::size_t &index) const
Definition: wykobi.hpp:230
pointnd()
Definition: wykobi.hpp:171
pointnd< T, D > & operator=(const pointnd< T, D > &point)
Definition: wykobi.hpp:206
pointnd(const T &v0, const T &v1)
Definition: wykobi.hpp:173
T & reference
Definition: wykobi.hpp:169
~pointnd()
Definition: wykobi.hpp:200
T v[D]
Definition: wykobi.hpp:240
pointnd(const point3d< T > &point)
Definition: wykobi.hpp:196
Definition: wykobi.hpp:383
void erase(const std::size_t index)
Definition: wykobi.hpp:409
const_iterator begin() const
Definition: wykobi.hpp:413
PointType value_type
Definition: wykobi.hpp:398
void clear() const
Definition: wykobi.hpp:407
void push_back(const PointType &value)
Definition: wykobi.hpp:405
const_iterator end() const
Definition: wykobi.hpp:415
void reserve(const std::size_t amount)
Definition: wykobi.hpp:406
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:401
reference front()
Definition: wykobi.hpp:417
polygon(const std::size_t initial_size=0)
Definition: wykobi.hpp:385
void reverse()
Definition: wykobi.hpp:421
iterator begin()
Definition: wykobi.hpp:414
std::vector< PointType >::iterator iterator
Definition: wykobi.hpp:396
const_reference back() const
Definition: wykobi.hpp:420
const_reference front() const
Definition: wykobi.hpp:418
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:402
const PointType & const_reference
Definition: wykobi.hpp:389
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:388
std::size_t size() const
Definition: wykobi.hpp:412
PointType & reference
Definition: wykobi.hpp:390
std::vector< PointType >::const_iterator const_iterator
Definition: wykobi.hpp:397
~polygon()
Definition: wykobi.hpp:386
void clear()
Definition: wykobi.hpp:408
iterator end()
Definition: wykobi.hpp:416
reference back()
Definition: wykobi.hpp:419
Definition: wykobi.hpp:359
static const std::size_t PointCount
Definition: wykobi.hpp:361
~quadix()
Definition: wykobi.hpp:364
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:366
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:375
const PointType & const_reference
Definition: wykobi.hpp:367
std::size_t size() const
Definition: wykobi.hpp:378
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:374
quadix()
Definition: wykobi.hpp:363
PointType & reference
Definition: wykobi.hpp:368
Definition: wykobi.hpp:468
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:476
~quadratic_bezier()
Definition: wykobi.hpp:474
const PointType & const_reference
Definition: wykobi.hpp:477
std::size_t size() const
Definition: wykobi.hpp:488
PointType & reference
Definition: wykobi.hpp:478
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:484
static const BezierType Type
Definition: wykobi.hpp:471
quadratic_bezier()
Definition: wykobi.hpp:473
static const std::size_t PointCount
Definition: wykobi.hpp:470
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:485
Definition: wykobi.hpp:674
VectorType direction
Definition: wykobi.hpp:683
ray()
Definition: wykobi.hpp:676
define_vector_type< T, Dimension >::VectorType VectorType
Definition: wykobi.hpp:680
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:679
PointType origin
Definition: wykobi.hpp:682
~ray()
Definition: wykobi.hpp:677
Definition: wykobi.hpp:335
static const std::size_t PointCount
Definition: wykobi.hpp:337
const PointType & const_reference
Definition: wykobi.hpp:343
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:350
rectangle()
Definition: wykobi.hpp:339
~rectangle()
Definition: wykobi.hpp:340
PointType & reference
Definition: wykobi.hpp:344
std::size_t size() const
Definition: wykobi.hpp:354
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:351
define_point_type< T, 2 >::PointType PointType
Definition: wykobi.hpp:342
Definition: wykobi.hpp:263
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:278
segment()
Definition: wykobi.hpp:267
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:270
std::size_t size()
Definition: wykobi.hpp:282
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:279
~segment()
Definition: wykobi.hpp:268
PointType & reference
Definition: wykobi.hpp:272
const PointType & const_reference
Definition: wykobi.hpp:271
static const std::size_t PointCount
Definition: wykobi.hpp:265
Definition: wykobi.hpp:433
T z
Definition: wykobi.hpp:435
T y
Definition: wykobi.hpp:435
T radius
Definition: wykobi.hpp:435
T x
Definition: wykobi.hpp:435
Definition: wykobi.hpp:311
std::size_t size() const
Definition: wykobi.hpp:330
const PointType & const_reference
Definition: wykobi.hpp:319
const_reference operator[](const std::size_t &index) const
Definition: wykobi.hpp:327
static const std::size_t PointCount
Definition: wykobi.hpp:313
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:318
PointType & reference
Definition: wykobi.hpp:320
triangle()
Definition: wykobi.hpp:315
reference operator[](const std::size_t &index)
Definition: wykobi.hpp:326
~triangle()
Definition: wykobi.hpp:316
Definition: wykobi.hpp:757
const T & sin(const unsigned int angle) const
Definition: wykobi.hpp:769
static const unsigned int TableSize
Definition: wykobi.hpp:759
trig_luts()
Definition: wykobi.hpp:761
const T & cos(const unsigned int angle) const
Definition: wykobi.hpp:770
const T & tan(const unsigned int angle) const
Definition: wykobi.hpp:771
Definition: wykobi.hpp:582
vector2d(const T &_x=T(0.0), const T &_y=T(0.0))
Definition: wykobi.hpp:584
vector2d< T > & operator=(const vectornd< T, 2 > &vec)
Definition: wykobi.hpp:589
Definition: wykobi.hpp:597
vector3d< T > & operator=(const vectornd< T, 3 > &vec)
Definition: wykobi.hpp:605
vector3d(const T &_x=T(0.0), const T &_y=T(0.0), const T &_z=T(0.0))
Definition: wykobi.hpp:599
Definition: wykobi.hpp:614
vectornd(const T &v0, const T &v1, const T &v2, const T &v3)
Definition: wykobi.hpp:631
vectornd(const vector2d< T > &vec)
Definition: wykobi.hpp:642
vectornd(const T &v0, const T &v1)
Definition: wykobi.hpp:620
vectornd(const T &v0)
Definition: wykobi.hpp:618
vectornd(const vectornd< T, D > &vec)
Definition: wykobi.hpp:638
vectornd()
Definition: wykobi.hpp:616
vectornd(const vector3d< T > &vec)
Definition: wykobi.hpp:647
vectornd(const T &v0, const T &v1, const T &v2)
Definition: wykobi.hpp:625
Definition: wykobi.hpp:32
const int CLIP_BOTTOM
Definition: wykobi.hpp:750
point3d< T > closest_point_on_plane_from_point(const plane< T, 3 > &plane, const point3d< T > &point)
T manhattan_distance(const T &x1, const T &y1, const T &x2, const T &y2)
triangle< T, 2 > create_isosceles_triangle(const point2d< T > &point1, const point2d< T > &point2, const T &angle)
eTriangleType
Definition: wykobi.hpp:726
@ etObtuse
Definition: wykobi.hpp:731
@ etIsosceles
Definition: wykobi.hpp:728
@ etScalene
Definition: wykobi.hpp:730
@ etEquilateral
Definition: wykobi.hpp:727
@ etRight
Definition: wykobi.hpp:729
@ etUnknown
Definition: wykobi.hpp:732
bool quadix_within_box(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &x4, const T &y4, const T &z4, const T &x5, const T &y5, const T &z5, const T &x6, const T &y6, const T &z6)
bool point_on_segment(const point2d< T > &point, const segment< T, 2 > &segment)
int in_sphere(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &x4, const T &y4, const T &z4, const T &px, const T &py, const T &pz)
T vector_norm(const vector2d< T > &v)
bool vertex_is_ear(const std::size_t &index, const polygon< T, 2 > &polygon)
bool cocircular(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &epsilon=T(Epsilon))
T signed_area(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py)
line< Float, 2 > line2d
Definition: wykobi.hpp:781
T lay_distance_from_point_to_circle_center(const point2d< T > &point, const circle< T > &circle)
polygon< T, D > make_polygon(const InputIterator begin, const InputIterator end)
point2d< T > generate_point_on_segment(const segment< T, 2 > &segment, const T &t)
point3d< T > box_corner(const box< T, 3 > &box, const std::size_t &corner_index)
T robust_cartesian_angle(const T &x, const T &y)
triangle< T, 2 > degenerate_triangle2d()
sphere< T > make_sphere(const T &x, const T &y, const T &z, const T &radius)
triangle< T, 2 > bezier_convex_hull(const quadratic_bezier< T, 2 > &bezier)
rectangle< T > degenerate_rectangle()
triangle< T, 2 > create_intouch_triangle(const triangle< T, 2 > &triangle)
bool clip(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, T &cx1, T &cy1, T &cx2, T &cy2)
segment< T, 2 > edge(const triangle< T, 2 > &triangle, const std::size_t &edge_index)
segment< T, 2 > make_segment(const T &x1, const T &y1, const T &x2, const T &y2)
bool segment_within_box(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &x4, const T &y4, const T &z4)
T area(const point2d< T > &point1, const point2d< T > &point2, const point2d< T > &point3)
sphere< T > degenerate_sphere()
bool differing_orientation(const T &x1, const T &y1, const T &x2, const T &y2, const T &p1x, const T &p1y, const T &p2x, const T &p2y)
void circle_tangent_points(const circle< T > &circle, const point2d< T > &point, point2d< T > &point1, point2d< T > &point2)
T distance_from_point_to_sphere_center(const point3d< T > &point, const sphere< T > &sphere)
circle< T > make_circle(const T &x, const T &y, const T &radius)
bool trilateration(const T &c0x, const T &c0y, const T &c0r, const T &c1x, const T &c1y, const T &c1r, const T &c2x, const T &c2y, const T &c2r, T &px, T &py)
line< T, 2 > triangle_median(const triangle< T, 2 > &triangle, const std::size_t &median)
bool point_in_focus_area(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
const int CounterClockwise
Definition: wykobi.hpp:739
line< T, 2 > create_perpendicular_bisector(const T &x1, const T &y1, const T &x2, const T &y2)
bool is_equilateral_triangle(const triangle< T, 2 > &triangle)
bool segment_within_rectangle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
triangle< T, 2 > create_feuerbach_triangle(const triangle< T, 2 > &triangle)
T perpendicular_product(const vector2d< T > &v1, const vector2d< T > &v2)
bool is_isosceles_triangle(const triangle< T, 2 > &triangle)
line< T, 2 > confined_triangle_median(const triangle< T, 2 > &triangle, const point2d< T > &point, const std::size_t &median)
ray< T, 2 > make_ray(const T &ox, const T &oy, const T &dir_x, const T &dir_y)
double epsilon< double >()
Definition: wykobi.hpp:793
triangle< T, 2 > create_outer_napoleon_triangle(const triangle< T, 2 > &triangle)
bool point_in_triangle(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
triangle< T, 2 > create_pedal_triangle(const point2d< T > &point, const triangle< T, 2 > &triangle)
circle< T > invert_circle_across_circle(const circle< T > &circle1, const circle< T > &circle2)
void swap(point2d< T > &point1, point2d< T > &point2)
bool point_in_polygon(const T &px, const T &py, const polygon< T, 2 > &polygon)
void closest_point_on_rectangle_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
bool is_point_collinear(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, const bool robust=false)
void project_point(const T &srcx, const T &srcy, const T &destx, const T &desty, const T &dist, T &nx, T &ny)
bool intersect_vertical_horizontal(const segment< T, 2 > &segment1, const segment< T, 2 > &segment2)
const int CLIP_TOP
Definition: wykobi.hpp:751
T triple_product(const vector3d< T > &v1, const vector3d< T > &v2, const vector3d< T > &v3)
bool parallel(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &epsilon=T(Epsilon))
bool perpendicular(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &epsilon=T(Epsilon))
bool less_than_or_equal(const T &val1, const T &val2, const T &epsilon)
T horizontal_mirror(const T &angle)
segment< T, 2 > center_at_location(const segment< T, 2 > &segment, const T &x, const T &y)
bool intersect(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
void circle_outer_tangent_segments(const circle< T > &circle0, const circle< T > &circle1, std::vector< segment< T, 2 > > &segments)
ray< T, 2 > degenerate_ray2d()
bool operator<(const point2d< T > &point1, const point2d< T > &point2)
segment< T, 2 > reverse_segment(const segment< T, 2 > &segment)
bool is_equal(const T &val1, const T &val2, const T &epsilon)
triangle< T, 2 > create_circumcevian_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
const int PointInside
Definition: wykobi.hpp:744
circle< T > excircle(const triangle< T, 2 > &triangle, const std::size_t &i)
rectangle< T > aabb(const segment< T, 2 > &segment)
line< T, 2 > triangle_symmedian(const triangle< T, 2 > &triangle, const std::size_t &symmedian)
void closest_point_on_triangle_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &px, const T &py, T &nx, T &ny)
bool box_within_box(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &x4, const T &y4, const T &z4)
bool point_on_rectangle(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2)
bool robust_coplanar(const point3d< T > point1, const point3d< T > point2, const point3d< T > point3, const point3d< T > point4, const T &epsilon=T(Epsilon))
bool collinear(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &epsilon=T(Epsilon))
point2d< T > antipodal_point(const point2d< T > &point, const circle< T > &circle)
triangle< T, 2 > create_inner_vecten_triangle(const triangle< T, 2 > &triangle)
bool point_in_quadix(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
T signed_volume(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &px, const T &py, const T &pz)
bool rectangle_to_rectangle_intersect(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
quadix< T, 2 > make_quadix(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
bool triangle_within_rectangle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &x5, const T &y5)
line< T, 2 > degenerate_line2d()
circle< T > inscribed_circle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
void project_point135(const T &px, const T &py, const T &distance, T &nx, T &ny)
circle< T > mandart_circle(const triangle< T, 2 > &triangle)
void lengthen_segment(T &x1, T &y1, T &x2, T &y2, const T &amount)
point2d< T > negative_infinite_point2d()
line< T, 3 > degenerate_line3d()
vector3d< T > degenerate_vector3d()
T lay_distance_segment_to_segment(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
sphere< T > invert_sphere_across_sphere(const sphere< T > &sphere1, const sphere< T > &sphere2)
bool point_in_three_point_circle(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
const int CLIP_LEFT
Definition: wykobi.hpp:752
void create_equilateral_quadix(const T &x1, const T &y1, const T &x2, const T &y2, T &x3, T &y3, T &x4, T &y4)
bool circle_within_rectangle(const T &x, const T &y, const T &radius, const T &x1, const T &y1, const T &x2, const T &y2)
void generate_random_object(const T &x1, const T &y1, const T &x2, const T &y2, segment< T, 2 > &segment)
bool robust_parallel(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &epsilon=T(Epsilon))
bool point_in_convex_polygon(const T &px, const T &py, const polygon< T, 2 > &polygon)
bool is_right_triangle(const wykobi::triangle< T, 2 > &triangle)
T bezier_curve_length(const quadratic_bezier< T, 2 > &bezier, const std::size_t &point_count)
point3d< T > closest_point_on_sphere_from_point(const sphere< T > &sphere, const point3d< T > &point)
bool point_of_reflection(const T &sx1, const T &sy1, const T &sx2, const T &sy2, const T &p1x, const T &p1y, const T &p2x, const T &p2y, T &rpx, T &rpy)
void closest_point_on_quadix_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &px, const T &py, T &nx, T &ny)
int polygon_orientation(const polygon< T, 2 > &polygon)
void centroid(const T &x1, const T &y1, const T &x2, const T &y2, T &x, T &y)
const int Cocircular
Definition: wykobi.hpp:746
bool box_to_box_intersect(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &x4, const T &y4, const T &z4)
bool coplanar(const ray< T, 3 > &ray1, const ray< T, 3 > &ray2)
void order_sensitive_closest_point_on_line_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
const int AboveOrientation
Definition: wykobi.hpp:741
triangle< T, 2 > create_anticomplementary_triangle(const triangle< T, 2 > &triangle)
circle< T > circumcircle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
T vertex_angle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
T sin(const T &value)
Definition: wykobi_math.hpp:138
segment< T, 2 > degenerate_segment2d()
T perimeter(const point2d< T > &point1, const point2d< T > &point2, const point2d< T > &point3)
const int BelowOrientation
Definition: wykobi.hpp:742
float epsilon< float >()
Definition: wykobi.hpp:797
T lay_distance_line_to_line(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
void project_point_t(const T &srcx, const T &srcy, const T &destx, const T &desty, const T &t, T &nx, T &ny)
const int RightHandSide
Definition: wykobi.hpp:736
vector2d< T > operator+(const vector2d< T > &v1, const vector2d< T > &v2)
T minimum_distance_from_point_to_segment(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2)
void project_point45(const T &px, const T &py, const T &distance, T &nx, T &ny)
bool operator>(const point2d< T > &point1, const point2d< T > &point2)
T vertical_mirror(const T &angle)
bool is_convex_polygon(const polygon< T, 2 > &polygon)
triangle< T, 2 > create_contact_triangle(const triangle< T, 2 > &triangle)
void circle_outer_tangent_lines(const circle< T > &circle0, const circle< T > &circle1, std::vector< line< T, 2 > > &lines)
T cos(const T &value)
Definition: wykobi_math.hpp:143
void closest_point_on_line_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
T tan(const T &value)
Definition: wykobi_math.hpp:148
line< T, 2 > create_line_from_bisector(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
void generate_bezier(const quadratic_bezier< T, 2 > &bezier, OutputIterator out, const std::size_t &point_count=1000)
void closest_point_on_box_from_point(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &px, const T &py, const T &pz, T &nx, T &ny, T &nz)
point2d< T > closest_point_on_circle_from_segment(const circle< T > &circle, const segment< T, 2 > &segment)
bool intersect_vertical_vertical(const segment< T, 2 > &segment1, const segment< T, 2 > &segment2)
void circle_internal_tangent_segments(const circle< T > &circle0, const circle< T > &circle1, std::vector< segment< T, 2 > > &segments)
bool simplex_to_bezier_intersect(const Simplex &simplex, const Bezier &bezier, const std::size_t &steps)
bool robust_collinear(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &epsilon=T(Epsilon))
T lay_distance_from_point_to_sphere_center(const point3d< T > &point, const sphere< T > &sphere)
const int Cospherical
Definition: wykobi.hpp:747
point2d< T > isogonal_conjugate(const point2d< T > &point, const triangle< T, 2 > &triangle)
vector2d< T > degenerate_vector2d()
segment< T, 3 > degenerate_segment3d()
const int PointOutside
Definition: wykobi.hpp:745
void segment_mid_point(const T &x1, const T &y1, const T &x2, const T &y2, T &midx, T &midy)
triangle< T, 2 > create_morley_triangle(const triangle< T, 2 > &triangle)
point3d< T > positive_infinite_point3d()
ray< T, 2 > create_ray_from_bisector(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
void closest_point_on_segment_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
point2d< T > exmedian_point(const triangle< T, 2 > &triangle, const std::size_t &corner)
bool point_on_quadix(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
void project_point90(const T &px, const T &py, const T &distance, T &nx, T &ny)
bool line_to_line_intersect(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
bool point_in_rectangle(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2)
segment< Float, 3 > segment3d
Definition: wykobi.hpp:785
line< T, 2 > euler_line(const triangle< T, 2 > &triangle)
unsigned int quadrant(const T &angle)
bool not_equal(const T &val1, const T &val2, const T &epsilon)
box< T, 3 > make_box(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2)
segment< T, 2 > create_segment_from_bisector(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
sphere< T > inscribed_sphere(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3)
line< T, 2 > perspectrix(const triangle< T, 2 > &triangle1, const triangle< T, 2 > &triangle2)
T chebyshev_distance(const T &x1, const T &y1, const T &x2, const T &y2)
int orientation(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py)
T oriented_vertex_angle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const int orient=Clockwise)
line< T, 2 > triangle_bisector(const triangle< T, 2 > &triangle, const std::size_t &bisector)
T generate_random_value(const T &range)
bool is_skinny_triangle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
triangle< Float, 3 > triangle3d
Definition: wykobi.hpp:787
void project_point315(const T &px, const T &py, const T &distance, T &nx, T &ny)
point2d< T > rectangle_corner(const rectangle< T > &rectangle, const std::size_t &corner_index)
void incenter(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, T &px, T &py)
point2d< T > degenerate_point2d()
T normalize_angle(const T &angle)
point2d< T > generate_random_point(const T &dx, const T &dy)
triangle< T, 2 > create_circummedial_triangle(const triangle< T, 2 > &triangle)
bool point_on_ray(const T &px, const T &py, const T &ox, const T &oy, const T &dx, const T &dy)
void project_point0(const T &px, const T &py, const T &distance, T &nx, T &ny)
triangle< T, 2 > create_orthic_triangle(const triangle< T, 2 > &triangle)
bool point_in_sphere(const T &px, const T &py, const T &pz, const T &cx, const T &cy, const T &cz, const T &radius)
bool robust_perpendicular(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &epsilon=T(Epsilon))
bool point_on_triangle(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
void intersection_point_line_to_line(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &x4, const T &y4, const T &z4, T &Ix, T &Iy, T &Iz, const T &fuzzy=T(0.0))
point2d< T > generate_point_on_ray(const ray< T, 2 > &ray, const T &t)
triangle< T, 2 > create_extouch_triangle(const triangle< T, 2 > &triangle)
circle< T > nine_point_circle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
T lay_distance(const T &x1, const T &y1, const T &x2, const T &y2)
point2d< T > closest_point_on_circle_from_point(const circle< T > &circle, const point2d< T > &point)
const int LeftHandSide
Definition: wykobi.hpp:737
bool common_center(const circle< T > &circle1, const circle< T > &circle2)
void shorten_segment(T &x1, T &y1, T &x2, T &y2, const T &amount)
triangle< T, 2 > create_cevian_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
void intersection_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, T &ix, T &iy)
T cartesian_angle(const T &x, const T &y)
circle< T > update_circle(const circle< T > &circle, point2d< T > &point)
point2d< T > feuerbach_point(const triangle< T, 2 > &triangle)
point2d< T > make_point(const T &x, const T &y)
box< T, 3 > update_box(const box< T, 3 > &box, point3d< T > &point)
bool triangle_within_box(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3, const T &x4, const T &y4, const T &z4, const T &x5, const T &y5, const T &z5)
circle< T > brocard_circle(const triangle< T, 2 > &triangle)
void generate_random_points(const T &x1, const T &y1, const T &x2, const T &y2, const std::size_t &point_count, OutputIterator out)
bool are_perspective_triangles(const triangle< T, 2 > &triangle1, const triangle< T, 2 > &triangle2)
bool simple_intersect(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
T minimum_distance_from_point_to_triangle(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
T operator*(const vector2d< T > &v1, const vector2d< T > &v2)
triangle< T, 2 > create_medial_triangle(const triangle< T, 2 > &triangle)
triangle< T, 2 > make_triangle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
bool convex_vertex(const std::size_t &index, const polygon< T, 2 > &polygon, const int &polygon_orientation=LeftHandSide)
segment< T, 2 > project_onto_axis(const point2d< T > &point, const line< T, 2 > &axis)
triangle< T, 2 > create_symmedial_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
sphere< T > circumsphere(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3)
point2d< T > excenter(const triangle< T, 2 > &triangle, const std::size_t &corner)
point2d< T > closest_point_on_polygon_from_point(const polygon< T, 2 > &polygon, const point2d< T > &point)
void calculate_bezier_coefficients(const quadratic_bezier< T, 2 > &bezier, T &ax, T &bx, T &ay, T &by)
void project_point225(const T &px, const T &py, const T &distance, T &nx, T &ny)
void circumcenter(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, T &px, T &py)
segment< T, 2 > opposing_edge(const triangle< T, 2 > &triangle, const std::size_t &corner)
bool convex_quadix(const quadix< T, 2 > &quadix)
point2d< T > invert_point(const point2d< T > &point, const circle< T > &circle)
bool operator==(const point2d< T > &point1, const point2d< T > &point2)
void fast_rotate(const trig_luts< T > &lut, const int rotation_angle, const T &x, const T &y, T &nx, T &ny)
triangle< Float, 2 > triangle2d
Definition: wykobi.hpp:782
point3d< T > negative_infinite_point3d()
point3d< T > closest_point_on_sphere_from_sphere(const sphere< T > &sphere1, const sphere< T > &sphere2)
vector2d< T > operator/(const vector2d< T > &v1, const T &scale)
T minimum_distance_from_point_to_rectangle(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2)
void mirror(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, T &nx, T &ny)
rectangle< T > make_rectangle(const T &x1, const T &y1, const T &x2, const T &y2)
quadix< Float, 2 > quadix2d
Definition: wykobi.hpp:783
vector2d< T > operator-(const vector2d< T > &v1, const vector2d< T > &v2)
T distance_from_point_to_circle_center(const point2d< T > &point, const circle< T > &circle)
line< T, 2 > create_perpendicular_line_at_end_point(const line< T, 2 > &line)
bool is_tangent(const segment< T, 2 > &segment, const circle< T > &circle)
BezierType
Definition: wykobi.hpp:464
@ eQuadraticBezier
Definition: wykobi.hpp:464
@ eCubicBezier
Definition: wykobi.hpp:464
triangle< T, 2 > right_shift(const triangle< T, 2 > &triangle, const std::size_t &shift)
triangle< T, 2 > create_outer_vecten_triangle(const triangle< T, 2 > &triangle)
void create_right_triangle(const wykobi::point2d< T > &p1, const wykobi::point2d< T > &p2, wykobi::point2d< T > &c1, wykobi::point2d< T > &c2)
void closest_point_on_ray_from_point(const T &ox, const T &oy, const T &dx, const T &dy, const T &px, const T &py, T &nx, T &ny)
triangle< T, 3 > degenerate_triangle3d()
curve_point< T, 2 > make_curve_point(const T &x, const T &y, const T &t)
point2d< T > minkowski_sum(const point2d< T > &point1, const point2d< T > &point2)
rectangle< T > update_rectangle(const rectangle< T > &rectangle, point2d< T > &point)
line< Float, 3 > line3d
Definition: wykobi.hpp:786
T dot_product(const vector2d< T > &v1, const vector2d< T > &v2)
T span_length(const rectangle< T > &rectangle)
ray< T, 3 > degenerate_ray3d()
circle< T > degenerate_circle()
quadix< Float, 3 > quadix3d
Definition: wykobi.hpp:788
point2d< T > symmedian_point(const triangle< T, 2 > &triangle)
void project_point180(const T &px, const T &py, const T &distance, T &nx, T &ny)
bool point_on_circle(const T &px, const T &py, const T &cx, const T &cy, const T &radius)
point3d< T > closest_point_on_sphere_from_segment(const sphere< T > &sphere, const segment< T, 3 > &segment)
triangle< T, 2 > create_inner_napoleon_triangle(const triangle< T, 2 > &triangle)
const int Clockwise
Definition: wykobi.hpp:738
bool intersect_horizontal_horizontal(const segment< T, 2 > &segment1, const segment< T, 2 > &segment2)
quadix< T, 2 > degenerate_quadix2d()
vector2d< T > make_vector(const T &x, const T &y)
T minimum_distance_from_point_to_line(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2)
triangle< T, 2 > vertex_triangle(const std::size_t &index, const polygon< T, 2 > polygon)
bool point_in_polygon_winding_number(const T &px, const T &py, const polygon< T, 2 > &polygon)
bool collinear_vertex(const std::size_t &index, const polygon< T, 2 > &polygon)
triangle< T, 2 > create_triangle(const point2d< T > &point1, const point2d< T > &point2, const T &angle1, const T &angle2)
triangle< T, 2 > create_excentral_triangle(const triangle< T, 2 > &triangle)
T distance_segment_to_segment(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
void circle_internal_tangent_lines(const circle< T > &circle0, const circle< T > &circle1, std::vector< line< T, 2 > > &lines)
triangle< T, 2 > create_anticevian_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
bool point_in_box(const T &px, const T &py, const T &pz, const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2)
triangle< T, 2 > create_incentral_triangle(const triangle< T, 2 > &triangle)
T distance_line_to_line(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
line< T, 2 > triangle_external_bisector(const triangle< T, 2 > &triangle, const std::size_t &corner, const std::size_t &opposing_corner)
line< T, 2 > create_parallel_line_on_point(const line< T, 2 > &line, const point2d< T > &point)
triangle< T, 2 > create_first_brocard_triangle(const triangle< T, 2 > &triangle)
line< T, 2 > tangent_line(const circle< T > &circle, const point2d< T > &point)
point2d< T > scale(const T &dx, const T &dy, const point2d< T > &point)
void create_equilateral_triangle(const T &x1, const T &y1, const T &x2, const T &y2, T &x3, T &y3)
plane< T, 3 > make_plane(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2, const T &x3, const T &y3, const T &z3)
point2d< T > closest_point_on_bezier_from_point(const quadratic_bezier< T, 2 > &bezier, const point2d< T > &point, const std::size_t &steps=1000)
quadix< T, 3 > degenerate_quadix3d()
bool circle_in_circle(const circle< T > &circle1, const circle< T > &circle2)
bool quadix_within_rectangle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, const T &x5, const T &y5, const T &x6, const T &y6)
int in_circle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &px, const T &py)
point2d< T > minkowski_difference(const point2d< T > &point1, const point2d< T > &point2)
bool greater_than_or_equal(const T &val1, const T &val2, const T &epsilon)
void project_point270(const T &px, const T &py, const T &distance, T &nx, T &ny)
bool is_degenerate(const T &x1, const T &y1, const T &x2, const T &y2)
T inverse_chebyshev_distance(const T &x1, const T &y1, const T &x2, const T &y2)
point2d< T > project_object(const point2d< T > &point, const T &angle, const T &distance)
const int CoplanarOrientation
Definition: wykobi.hpp:743
sphere< T > update_sphere(const sphere< T > &sphere, point3d< T > &point)
line< T, 2 > make_line(const T &x1, const T &y1, const T &x2, const T &y2)
segment< Float, 2 > segment2d
Definition: wykobi.hpp:780
bool point_in_circle(const T &px, const T &py, const T &cx, const T &cy, const T &radius)
bool polygon_within_box(const polygon< T, 3 > &polygon, const box< T, 3 > &box)
void nonsymmetric_mirror(const T &px, const T &py, const T &x1, const T &y1, const T &x2, const T &y2, const T &ratio, T &nx, T &ny)
int out_code(const point2d< T > &point, const rectangle< T > &rectangle)
vector2d< T > normalize(const vector2d< T > &v)
const int CollinearOrientation
Definition: wykobi.hpp:740
T distance(const T &x1, const T &y1, const T &x2, const T &y2)
segment< T, 2 > create_parallel_segment_on_point(const line< T, 2 > &line, const point2d< T > &point)
void torricelli_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, T &px, T &py)
eInclusion
Definition: wykobi.hpp:724
@ eUnknown
Definition: wykobi.hpp:724
@ ePartially
Definition: wykobi.hpp:724
@ eFully
Definition: wykobi.hpp:724
@ eOutside
Definition: wykobi.hpp:724
point2d< T > create_point_on_bezier(const point2d< T > &start_point, const T &ax, const T &bx, const T &ay, const T &by, const T &t)
bool point_on_bezier(const point2d< T > &point, const quadratic_bezier< T, 2 > &bezier, const std::size_t &steps=1000, const T &fuzzy=T(Epsilon))
void order_sensitive_closest_point_on_segment_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
geometric_type
Definition: wykobi.hpp:49
@ ePoint2D
Definition: wykobi.hpp:50
@ eTriangle2D
Definition: wykobi.hpp:58
@ eSegment2D
Definition: wykobi.hpp:52
@ eTriangle3D
Definition: wykobi.hpp:59
@ eLine3D
Definition: wykobi.hpp:57
@ eQuadix3D
Definition: wykobi.hpp:61
@ ePoint3D
Definition: wykobi.hpp:51
@ eSphere
Definition: wykobi.hpp:65
@ eLine2D
Definition: wykobi.hpp:56
@ eSegment3D
Definition: wykobi.hpp:53
@ eCircle
Definition: wykobi.hpp:64
@ eQuadix2D
Definition: wykobi.hpp:60
@ eRay2D
Definition: wykobi.hpp:62
@ eRectangle
Definition: wykobi.hpp:54
@ eRay3D
Definition: wykobi.hpp:63
@ eBox
Definition: wykobi.hpp:55
point2d< T > positive_infinite_point2d()
point2d< T > cyclocevian_conjugate(const point2d< T > &point, const triangle< T, 2 > &triangle)
bool sphere_within_box(const T &x, const T &y, const T &z, const T &radius, const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2)
bool rectangle_within_rectangle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4)
void rotate(const T &rotation_angle, const T &x, const T &y, T &nx, T &ny)
bool polygon_within_rectangle(const polygon< T, 2 > &polygon, const rectangle< T > &rectangle)
const int CLIP_RIGHT
Definition: wykobi.hpp:753
point3d< T > degenerate_point3d()
triangle< T, 2 > create_antipedal_triangle(const point2d< T > &point, const triangle< T, 2 > &triangle)
int robust_orientation(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py)
bool point_on_polygon_edge(const T &px, const T &py, const polygon< T, 2 > &polygon)
point2d< T > orthocenter(const triangle< T, 2 > &triangle)
point2d< T > translate(const T &dx, const T &dy, const point2d< T > &point)
polygon< T, 2 > remove_consecutive_collinear_points(const polygon< T, 2 > &polygon)
point2d< T > closest_point_on_circle_from_circle(const circle< T > &circle1, const circle< T > &circle2)
point2d< T > closest_point_on_aabbb_from_point(const rectangle< T > &rectangle, const point2d< T > &point)
Definition: wykobi.hpp:545
PointType & reference
Definition: wykobi.hpp:548
const PointType & const_reference
Definition: wykobi.hpp:547
define_point_type< T, Dimension >::PointType PointType
Definition: wykobi.hpp:546
PointType value[Type]
Definition: wykobi.hpp:550