34static const char VERSION_INFORMATION[] =
"Wykobi Version 0.0.5";
35static const char AUTHOR_INFORMATION[] =
"Arash Partow";
36static const char EPOCH_VERSION[] =
"C578AC5A:35A4123B:DF32F721";
70template <
typename T, std::
size_t D>
73template <
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);
107template <
typename T = Float>
138 inline reference value(
const std::size_t& index) {
165template <
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];
243template <
typename T, std::
size_t Dimension>
262template <
typename T, std::
size_t Dimension>
286template <
typename T, std::
size_t Dimension>
310template <
typename T, std::
size_t Dimension>
358template <
typename T, std::
size_t Dimension>
382template <
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()); }
439template <
typename T, std::
size_t Dimension>
467template <
typename T, std::
size_t Dimension>
492template <
typename T, std::
size_t Dimension>
516template <
typename T,
unsigned int Dimension, BezierType BType>
544template <
typename T,
unsigned int Dimension, BezierType Type>
554template <
typename T, std::
size_t Dimension>
578template <
typename T, std::
size_t D>
584 vector2d(
const T& _x = T(0.0),
const T& _y = T(0.0)) {
599 vector3d(
const T& _x = T(0.0),
const T& _y = T(0.0),
const T& _z = T(0.0)) {
613template <
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];
654template <
typename T, std::
size_t Dimension>
673template <
typename T, std::
size_t Dimension>
687template <
typename T, std::
size_t Dimension>
701template <
typename T, std::
size_t Dimension>
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]; }
794 return static_cast<double>(Epsilon_Medium);
798 return static_cast<float>(Epsilon_Low);
802inline int orientation(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
803 const T& px,
const T& py);
806inline 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);
812 const T& y2,
const T& px,
const T& py);
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);
822 const T& px,
const T& py);
839 const point3d<T>& point3,
const T& px,
const T& py,
851 const T& y2,
const T& p1x,
const T& p1y,
852 const T& p2x,
const T& p2y);
859inline 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);
870inline 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);
884inline T
signed_area(
const T& x1,
const T& y1,
const T& x2,
const T& y2,
885 const T& px,
const T& py);
889 const T& px,
const T& py);
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);
905 const point3d<T>& point3,
const T& px,
const T& py,
916inline 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));
920inline 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));
934 const T& x3,
const T& y3,
935 const T&
epsilon = T(Epsilon));
939 const T&
epsilon = T(Epsilon));
943 const T&
epsilon = T(Epsilon));
947 const T&
epsilon = T(Epsilon));
951 const T& y2,
const T& z2,
const T& x3,
const T& y3,
952 const T& z3,
const T&
epsilon = T(Epsilon));
956 const T&
epsilon = T(Epsilon));
960 const T& y2,
const T& px,
const T& py,
961 const bool robust =
false);
966 const bool robust =
false);
971 const T& py,
const bool robust =
false);
975 const bool robust =
false);
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);
987 const bool robust =
false);
992 const bool robust =
false);
997 const T&
epsilon = T(Epsilon));
1001template <
typename T>
1004template <
typename T>
1006template <
typename T>
1009template <
typename T>
1012template <
typename T>
1013inline 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));
1017template <
typename T>
1020 const T&
epsilon = T(Epsilon));
1022template <
typename T>
1024 const T&
epsilon = T(Epsilon));
1026template <
typename T>
1028 const T&
epsilon = T(Epsilon));
1030template <
typename T>
1032 const T& y2,
const T& x3,
const T& y3);
1034template <
typename T>
1039template <
typename T>
1042template <
typename T>
1043inline 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);
1046template <
typename T>
1047inline 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,
1050template <
typename T>
1054template <
typename T>
1059template <
typename T>
1063template <
typename T>
1067template <
typename T>
1071template <
typename T>
1072inline 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));
1077template <
typename T>
1080 const T& fuzzy = T(0.0));
1082template <
typename T>
1085template <
typename T>
1088template <
typename T>
1091template <
typename T>
1093template <
typename T>
1095template <
typename T>
1097template <
typename T>
1100 const std::size_t& steps = 1000);
1101template <
typename T>
1104 const std::size_t& steps = 1000);
1105template <
typename T>
1107 const T& fuzzy = T(0.0));
1108template <
typename T>
1110template <
typename T>
1112template <
typename T>
1114template <
typename T>
1117 const std::size_t& steps = 1000);
1118template <
typename T>
1121 const std::size_t& steps = 1000);
1122template <
typename T>
1124template <
typename T>
1126template <
typename T>
1128template <
typename T>
1130template <
typename T>
1133 const std::size_t& steps = 1000);
1134template <
typename T>
1136 const std::size_t& steps = 1000);
1137template <
typename T>
1139template <
typename T>
1141template <
typename T>
1143template <
typename T>
1146 const std::size_t& steps = 1000);
1147template <
typename T>
1149 const std::size_t& steps = 1000);
1150template <
typename T>
1152template <
typename T>
1155template <
typename T>
1158 const std::size_t& steps = 1000);
1159template <
typename T>
1162 const std::size_t& steps = 1000);
1163template <
typename T>
1166template <
typename T>
1169template <
typename T>
1171template <
typename T>
1174 const std::size_t& steps = 1000);
1175template <
typename T>
1178 const std::size_t& steps = 1000);
1179template <
typename T>
1182 const std::size_t& steps = 1000);
1183template <
typename T>
1186 const std::size_t& steps = 1000);
1187template <
typename T>
1189template <
typename T>
1192 const std::size_t& steps = 1000);
1193template <
typename T>
1195 const std::size_t& steps = 1000);
1196template <
typename T>
1198template <
typename T>
1200template <
typename T>
1203 const std::size_t& steps = 1000);
1204template <
typename T>
1206 const std::size_t& steps = 1000);
1207template <
typename T>
1209template <
typename T>
1211template <
typename T>
1213template <
typename T>
1215template <
typename T>
1217template <
typename T>
1219template <
typename T>
1221template <
typename T>
1223template <
typename T>
1225template <
typename T>
1227template <
typename T>
1229template <
typename T>
1231template <
typename T>
1233template <
typename T>
1235template <
typename T>
1237template <
typename T>
1240template <
typename T>
1242 const T& x3,
const T& y3,
const T& x4,
1245template <
typename T>
1250template <
typename T>
1254template <
typename T>
1257template <
typename T>
1260template <
typename T>
1264template <
typename T>
1266 const T& y2,
const T& x3,
const T& y3,
1267 const T& x4,
const T& y4, T& ix, T& iy);
1269template <
typename T>
1275template <
typename T>
1280template <
typename T>
1284template <
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));
1291template <
typename T>
1295 const point3d<T>& point4, T& ix, T& iy, T& iz,
1296 const T& fuzzy = T(0.0));
1298template <
typename T>
1303 const T& fuzzy = T(0.0));
1305template <
typename T>
1308 const T& fuzzy = T(0.0));
1310template <
typename T>
1314template <
typename T>
1317 const T& fuzzy = T(0.0));
1319template <
typename T>
1323template <
typename T,
typename OutputIterator>
1327 const std::size_t& steps = 1000);
1329template <
typename T,
typename OutputIterator>
1333 const std::size_t& steps = 1000);
1335template <
typename T,
typename OutputIterator>
1339 const std::size_t& steps = 1000);
1341template <
typename T,
typename OutputIterator>
1345 const std::size_t& steps = 1000);
1347template <
typename T>
1351template <
typename T>
1354 const T& fuzzy = T(0.0));
1356template <
typename T>
1361template <
typename T,
typename OutputIterator>
1364 OutputIterator out);
1366template <
typename T>
1371template <
typename T>
1375template <
typename T,
typename OutputIterator>
1377 const T& y2,
const T& cx,
const T& cy,
1378 const T& radius, OutputIterator out);
1380template <
typename T,
typename OutputIterator>
1384template <
typename T,
typename OutputIterator>
1386 OutputIterator out);
1388template <
typename T,
typename OutputIterator>
1392template <
typename T,
typename OutputIterator>
1394 OutputIterator out);
1396template <
typename T>
1400template <
typename T>
1404template <
typename T>
1408template <
typename T,
typename OutputIterator>
1410 OutputIterator out);
1412template <
typename T,
typename OutputIterator>
1414 OutputIterator out);
1416template <
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));
1422template <
typename T>
1425template <
typename T>
1428template <
typename T>
1431template <
typename T>
1434template <
typename T>
1437template <
typename T>
1440template <
typename T>
1442 const T& x3,
const T& y3);
1444template <
typename T>
1448template <
typename T>
1450 const T& y2,
const T& z2,
const T& x3,
const T& y3,
1453template <
typename T>
1457template <
typename T>
1459 const T& y2,
const T& x3,
const T& y3,
1461template <
typename T>
1466template <
typename T>
1469template <
typename T>
1472template <
typename T>
1475template <
typename T>
1478template <
typename T>
1481template <
typename T>
1484template <
typename T>
1488template <
typename T>
1492template <
typename T>
1493inline 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));
1497template <
typename T>
1500 const T&
epsilon = T(Epsilon));
1502template <
typename T>
1505 const T&
epsilon = T(Epsilon));
1507template <
typename T>
1509 const T&
epsilon = T(Epsilon));
1511template <
typename T>
1512inline 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));
1517template <
typename T>
1520 const T&
epsilon = T(Epsilon));
1522template <
typename T>
1525 const T&
epsilon = T(Epsilon));
1527template <
typename T>
1529 const T&
epsilon = T(Epsilon));
1531template <
typename T>
1533 const T& x3,
const T& y3,
const T& x4,
const T& y4,
1534 const T&
epsilon = T(Epsilon));
1536template <
typename T>
1539 const T&
epsilon = T(Epsilon));
1541template <
typename T>
1544 const T&
epsilon = T(Epsilon));
1546template <
typename T>
1548 const T&
epsilon = T(Epsilon));
1550template <
typename T>
1553 const T&
epsilon = T(Epsilon));
1555template <
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));
1561template <
typename T>
1564 const T&
epsilon = T(Epsilon));
1566template <
typename T>
1569 const T&
epsilon = T(Epsilon));
1571template <
typename T>
1573 const T&
epsilon = T(Epsilon));
1575template <
typename T>
1578 const T&
epsilon = T(Epsilon));
1580template <
typename T>
1582 const T& x3,
const T& y3,
const T& x4,
const T& y4,
1583 const T&
epsilon = T(Epsilon));
1585template <
typename T>
1588 const T&
epsilon = T(Epsilon));
1590template <
typename T>
1593 const T&
epsilon = T(Epsilon));
1595template <
typename T>
1597 const T&
epsilon = T(Epsilon));
1599template <
typename T>
1601 const T&
epsilon = T(Epsilon));
1603template <
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));
1609template <
typename T>
1612 const T&
epsilon = T(Epsilon));
1614template <
typename T>
1617 const T&
epsilon = T(Epsilon));
1619template <
typename T>
1621 const T&
epsilon = T(Epsilon));
1623template <
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));
1629template <
typename T>
1634 const T&
epsilon = T(Epsilon));
1636template <
typename T>
1639 const T&
epsilon = T(Epsilon));
1641template <
typename T>
1644 const T&
epsilon = T(Epsilon));
1646template <
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));
1653template <
typename T>
1658 const T&
epsilon = T(Epsilon));
1660template <
typename T>
1663 const T&
epsilon = T(Epsilon));
1665template <
typename T>
1668 const T&
epsilon = T(Epsilon));
1670template <
typename T>
1673 const T&
epsilon = T(Epsilon));
1675template <
typename T>
1677 const T& y2,
const T& x3,
const T& y3,
1678 const T& x4,
const T& y4);
1679template <
typename T>
1683template <
typename T>
1685 const T& x2,
const T& y2,
1686 const T& x3,
const T& y3,
1687 const T& x4,
const T& y4);
1689template <
typename T>
1693template <
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);
1699template <
typename T>
1702template <
typename T,
unsigned int Dimension,
typename Simplex,
typename Bezier>
1704 const Bezier& bezier,
1705 const std::size_t& steps);
1707template <
typename T,
unsigned int Dimension,
typename Bezier,
1710 const Iterator& end,
1711 const Bezier& bezier,
1712 const std::size_t& steps);
1714template <
typename T>
1716 const T& y2,
const T& x3,
const T& y3,
1717 const T& x4,
const T& y4);
1719template <
typename T>
1723template <
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);
1728template <
typename T>
1731template <
typename T>
1733 const T& x1,
const T& y1,
const T& x2,
1736template <
typename T>
1740template <
typename T>
1742 const T& y2,
const T& x3,
const T& y3,
1743 const T& x4,
const T& y4,
const T& x5,
1745template <
typename T>
1749template <
typename T>
1751 const T& y2,
const T& x3,
const T& y3,
1752 const T& x4,
const T& y4);
1754template <
typename T>
1758template <
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);
1764template <
typename T>
1768template <
typename T>
1772template <
typename T>
1774 const T& radius,
const T& x1,
const T& y1,
1775 const T& z1,
const T& x2,
const T& y2,
1778template <
typename T>
1781template <
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);
1787template <
typename T>
1791template <
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);
1797template <
typename T>
1801template <
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);
1809template <
typename T>
1812template <
typename T>
1816template <
typename T>
1820template <
typename T>
1823template <
typename T>
1825 const T& sy2,
const T& p1x,
const T& p1y,
1826 const T& p2x,
const T& p2y, T& rpx, T& rpy);
1827template <
typename T>
1833template <
typename T>
1835 const std::size_t& edge_index);
1836template <
typename T>
1838 const std::size_t& edge_index);
1839template <
typename T>
1841 const std::size_t& edge_index);
1842template <
typename T>
1844 const std::size_t& edge_index);
1845template <
typename T>
1847 const std::size_t&
edge);
1848template <
typename T>
1850 const std::size_t&
edge);
1851template <
typename T>
1853 const std::size_t&
edge);
1855template <
typename T>
1857 const std::size_t& corner);
1858template <
typename T>
1860 const std::size_t& corner);
1862template <
typename T>
1864template <
typename T>
1867template <
typename T>
1869 const std::size_t& corner_index);
1870template <
typename T>
1872 const std::size_t& corner_index);
1874template <
typename T>
1876 const std::size_t& bisector);
1877template <
typename T>
1879 const std::size_t& bisector);
1881template <
typename T>
1884 const std::size_t& opposing_corner);
1886template <
typename T>
1889 const std::size_t& opposing_corner);
1891template <
typename T>
1893 const std::size_t& median);
1894template <
typename T>
1896 const std::size_t& median);
1898template <
typename T>
1900 const std::size_t& symmedian);
1901template <
typename T>
1903 const std::size_t& symmedian);
1905template <
typename T>
1907template <
typename T>
1910template <
typename T>
1912 const std::size_t& corner);
1913template <
typename T>
1915 const std::size_t& corner);
1917template <
typename T>
1920template <
typename T>
1923 const std::size_t& median);
1925template <
typename T>
1928 const std::size_t& median);
1930template <
typename T>
1933template <
typename T>
1937template <
typename T>
1940template <
typename T>
1944template <
typename T>
1946 const T& y1,
const T& x2,
const T& y2);
1948template <
typename T>
1950 const T& y1,
const T& x2,
const T& y2);
1952template <
typename T>
1956template <
typename T>
1960template <
typename T>
1965template <
typename T>
1969template <
typename T>
1970inline 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,
1974template <
typename T>
1976 const T& z1,
const T& x2,
const T& y2,
const T& z2);
1978template <
typename T>
1982template <
typename T>
1985template <
typename T>
1989template <
typename T>
1992template <
typename T>
1994 const T& y1,
const T& x2,
const T& y2,
1995 const T& x3,
const T& y3);
1996template <
typename T>
2001template <
typename T>
2005template <
typename T>
2009template <
typename T>
2011 const T& x2,
const T& y2,
const T& x3,
const T& y3,
2012 const T& x4,
const T& y4);
2014template <
typename T>
2019template <
typename T>
2022template <
typename T>
2026template <
typename T>
2030template <
typename T>
2033template <
typename T>
2036template <
typename T>
2038 const T& cy,
const T& cz,
const T& radius);
2040template <
typename T>
2044template <
typename T>
2047template <
typename T>
2049 const T& y1,
const T& x2,
const T& y2,
2050 const T& x3,
const T& y3);
2052template <
typename T>
2058template <
typename T>
2062template <
typename T>
2064 const T& y1,
const T& x2,
const T& y2,
2065 const T& x3,
const T& y3);
2066template <
typename T>
2072template <
typename T>
2076template <
typename T>
2080template <
typename T>
2081inline bool point_on_ray(
const T& px,
const T& py,
const T& ox,
const T& oy,
2082 const T& dx,
const T& dy);
2084template <
typename T>
2085inline 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,
2089template <
typename T>
2092template <
typename T>
2095template <
typename T>
2097 const T& y1,
const T& x2,
const T& y2);
2099template <
typename T>
2101 const T& y1,
const T& x2,
const T& y2);
2103template <
typename T>
2107template <
typename T>
2111template <
typename T>
2113 const T& y1,
const T& x2,
const T& y2,
2114 const T& x3,
const T& y3);
2115template <
typename T>
2120template <
typename T>
2124template <
typename T>
2128template <
typename T>
2130 const T& x2,
const T& y2,
const T& x3,
const T& y3,
2131 const T& x4,
const T& y4);
2133template <
typename T>
2138template <
typename T>
2141template <
typename T>
2145template <
typename T>
2149template <
typename T>
2152template <
typename T>
2155template <
typename T>
2158 const std::size_t& steps = 1000,
2159 const T& fuzzy = T(Epsilon));
2161template <
typename T>
2164 const std::size_t& steps = 1000,
2165 const T& fuzzy = T(Epsilon));
2167template <
typename T>
2170 const std::size_t& steps = 1000,
2171 const T& fuzzy = T(Epsilon));
2173template <
typename T>
2176 const std::size_t& steps = 1000,
2177 const T& fuzzy = T(Epsilon));
2179template <
typename T>
2183template <
typename T>
2187template <
typename T>
2191template <
typename T>
2194template <
typename T>
2197template <
typename T>
2199 const T& y2, T& x3, T& y3);
2201template <
typename T>
2206template <
typename T>
2208 const T& x2,
const T& y2);
2210template <
typename T>
2214template <
typename T>
2216 const T& side_length);
2217template <
typename T>
2219 const point2d<T>& center_point,
const T& side_length);
2221template <
typename T>
2225template <
typename T>
2229template <
typename T>
2233template <
typename T>
2235 const T& angle1,
const T& angle2);
2237template <
typename T>
2240template <
typename T>
2243template <
typename T>
2247template <
typename T>
2250template <
typename T>
2254template <
typename T>
2257template <
typename T>
2261template <
typename T>
2265template <
typename T>
2269template <
typename T>
2273template <
typename T>
2277template <
typename T>
2279template <
typename T>
2282template <
typename T>
2284template <
typename T>
2287template <
typename T>
2291template <
typename T>
2293template <
typename T>
2296template <
typename T>
2299template <
typename T>
2303template <
typename T>
2307template <
typename T>
2309template <
typename T>
2312template <
typename T>
2314template <
typename T>
2317template <
typename T>
2320template <
typename T>
2322template <
typename T>
2325template <
typename T>
2328template <
typename T>
2332template <
typename T>
2336template <
typename T>
2340template <
typename T>
2346template <
typename T>
2348 const T& y2, T& x3, T& y3, T& x4, T& y4);
2350template <
typename T>
2355template <
typename T>
2357 const T& x2,
const T& y2);
2359template <
typename T>
2363template <
typename T>
2366template <
typename T>
2368 const T& side_length);
2370template <
typename T>
2372 const T& side_length);
2374template <
typename T>
2376 const T& x3,
const T& y3, T& px, T& py);
2378template <
typename T>
2383template <
typename T>
2386template <
typename T>
2388 const T& c1x,
const T& c1y,
const T& c1r,
2389 const T& c2x,
const T& c2y,
const T& c2r, T& px,
2392template <
typename T>
2396template <
typename T>
2397inline 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);
2400template <
typename T>
2401inline 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);
2405template <
typename T>
2409template <
typename T>
2413template <
typename T>
2416template <
typename T>
2419template <
typename T>
2420inline 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);
2423template <
typename T>
2424inline 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);
2428template <
typename T>
2433template <
typename T>
2438template <
typename T>
2441template <
typename T>
2444template <
typename T>
2446 const T& y2,
const T& x3,
const T& y3);
2448template <
typename T>
2453template <
typename T>
2456template <
typename T>
2458 const T& x2,
const T& y2,
const T& z2,
2459 const T& x3,
const T& y3,
const T& z3);
2461template <
typename T>
2466template <
typename T>
2469template <
typename T>
2471 const T& y2,
const T& x3,
const T& y3);
2473template <
typename T>
2478template <
typename T>
2481template <
typename T>
2483 const T& x2,
const T& y2,
const T& z2,
2484 const T& x3,
const T& y3,
const T& z3);
2486template <
typename T>
2491template <
typename T>
2494template <
typename T>
2496 const T& y2,
const T& x3,
const T& y3);
2498template <
typename T>
2503template <
typename T>
2506template <
typename T>
2509template <
typename T>
2512template <
typename T>
2514 const std::size_t& corner);
2516template <
typename T>
2518 const std::size_t& corner);
2520template <
typename T>
2523template <
typename T>
2526template <
typename T>
2529template <
typename T>
2533template <
typename T>
2537template <
typename T>
2542template <
typename T>
2547template <
typename T>
2552template <
typename T>
2557template <
typename T>
2562template <
typename T>
2566template <
typename T>
2568 const T& x2,
const T& y2,
2569 const T& x3,
const T& y3);
2571template <
typename T>
2573 const T& x2,
const T& y2,
2574 const T& x3,
const T& y3);
2576template <
typename T>
2578 const T& y2,
const T& x3,
2581template <
typename T>
2583 const T& z1,
const T& x2,
2584 const T& y2,
const T& z2,
2585 const T& x3,
const T& y3,
2588template <
typename T>
2590 const T& z1,
const T& x2,
2591 const T& y2,
const T& z2,
2592 const T& x3,
const T& y3,
2595template <
typename T>
2597 const T& x2,
const T& y2,
const T& z2,
2598 const T& x3,
const T& y3,
2601template <
typename T>
2605template <
typename T>
2609template <
typename T>
2613template <
typename T>
2617template <
typename T>
2621template <
typename T>
2626template <
typename T>
2628 const T& x2,
const T& y2);
2629template <
typename T>
2632template <
typename T>
2635template <
typename T>
2639template <
typename T>
2641 const T& x2,
const T& y2,
2642 const T& px,
const T& py, T& nx,
2645template <
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);
2650template <
typename T>
2652 const T& x2,
const T& y2,
2653 const T& px,
const T& py, T& nx,
2656template <
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);
2663template <
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);
2668template <
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);
2673template <
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);
2678template <
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);
2683template <
typename T>
2685 const T& dx,
const T& dy,
2686 const T& px,
const T& py, T& nx,
2689template <
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);
2696template <
typename T>
2698 const T& x2,
const T& y2,
2699 const T& px,
const T& py);
2701template <
typename T>
2703 const T& z1,
const T& x2,
2704 const T& y2,
const T& z2,
2705 const T& px,
const T& py,
2708template <
typename T>
2712template <
typename T>
2716template <
typename T>
2718 const T& x2,
const T& y2,
2719 const T& px,
const T& py);
2721template <
typename T>
2723 const T& z1,
const T& x2,
2724 const T& y2,
const T& z2,
2725 const T& px,
const T& py,
2728template <
typename T>
2732template <
typename T>
2736template <
typename T>
2738 const T& dx,
const T& dy,
2739 const T& px,
const T& py);
2741template <
typename T>
2743 const T& oz,
const T& dx,
2744 const T& dy,
const T& dz,
2745 const T& px,
const T& py,
2748template <
typename T>
2752template <
typename T>
2756template <
typename T>
2758 const T& x2,
const T& y2,
2759 const T& x3,
const T& y3,
2760 const T& px,
const T& py,
2763template <
typename T>
2765 const T& x2,
const T& y2,
2766 const T& x3,
const T& y3,
2770template <
typename T>
2774template <
typename T>
2778template <
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);
2784template <
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);
2790template <
typename T>
2794template <
typename T>
2798template <
typename T>
2800 const T& x2,
const T& y2,
2801 const T& px,
const T& py,
2804template <
typename T>
2806 const T& x1,
const T& y1,
const T& x2,
const T& y2,
const T& px,
2809template <
typename T>
2813template <
typename T>
2817template <
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);
2824template <
typename T>
2826 const T& z1,
const T& x2,
2827 const T& y2,
const T& z2,
2828 const T& px,
const T& py,
2831template <
typename T>
2833 const T& px,
const T& py,
2836template <
typename T>
2840template <
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,
2848template <
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);
2854template <
typename T>
2858template <
typename T>
2862template <
typename T>
2866template <
typename T>
2870template <
typename T>
2874template <
typename T>
2878template <
typename T>
2882template <
typename T>
2885 const std::size_t& steps = 1000);
2887template <
typename T>
2890 const std::size_t& steps = 1000);
2892template <
typename T>
2895 const std::size_t& steps = 1000);
2897template <
typename T>
2900 const std::size_t& steps = 1000);
2902template <
typename T>
2906template <
typename T>
2910template <
typename T>
2914template <
typename T>
2916 const T& x1,
const T& y1,
2917 const T& x2,
const T& y2);
2919template <
typename T>
2921 const T& pz,
const T& x1,
2922 const T& y1,
const T& z1,
2923 const T& x2,
const T& y2,
2926template <
typename T>
2930template <
typename T>
2934template <
typename T>
2936 const T& x1,
const T& y1,
2937 const T& x2,
const T& y2);
2939template <
typename T>
2941 const T& pz,
const T& x1,
2942 const T& y1,
const T& z1,
2943 const T& x2,
const T& y2,
2946template <
typename T>
2950template <
typename T>
2954template <
typename T>
2956 const T& x1,
const T& y1,
2957 const T& x2,
const T& y2,
2958 const T& x3,
const T& y3);
2960template <
typename T>
2964template <
typename T>
2966 const T& x1,
const T& y1,
2967 const T& x2,
const T& y2);
2969template <
typename T>
2973template <
typename T>
2975 const T& y2, T& midx, T& midy);
2977template <
typename T>
2980template <
typename T>
2984template <
typename T>
2987template <
typename T>
2989 const T& x2,
const T& y2,
const T& z2, T& midx,
2992template <
typename T>
2996template <
typename T>
3000template <
typename T>
3003template <
typename T>
3004inline void centroid(
const T& x1,
const T& y1,
const T& x2,
const T& y2, T& x,
3007template <
typename T>
3010template <
typename T>
3013template <
typename T>
3014inline 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);
3017template <
typename T>
3018inline 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);
3022template <
typename T>
3023inline 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,
3027template <
typename T>
3029template <
typename T>
3031template <
typename T>
3033template <
typename T>
3035template <
typename T>
3037template <
typename T>
3040template <
typename T>
3043template <
typename T>
3046template <
typename T>
3048template <
typename T>
3050template <
typename T>
3052template <
typename T>
3054template <
typename T>
3056template <
typename T>
3059template <
typename T>
3061template <
typename T>
3064template <
typename T>
3067template <
typename T>
3071template <
typename T>
3074template <
typename T>
3078template <
typename T>
3081template <
typename T>
3085template <
typename T>
3088template <
typename T>
3092template <
typename T>
3094template <
typename T>
3097template <
typename T>
3100template <
typename T>
3104template <
typename T,
typename InputIterator,
typename OutputIterator>
3106 const InputIterator end,
3107 OutputIterator out);
3109template <
typename T>
3114template <
typename T>
3118template <
typename T>
3122template <
typename T>
3126template <
typename T>
3129template <
typename T>
3131template <
typename T>
3134template <
typename T>
3136template <
typename T>
3139template <
typename T>
3141template <
typename T>
3144template <
typename T>
3147template <
typename T>
3151template <
typename T>
3154template <
typename T>
3158template <
typename T>
3159inline 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);
3162template <
typename T>
3163inline 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);
3167template <
typename T>
3170template <
typename T>
3173template <
typename T>
3176template <
typename T>
3179template <
typename T>
3182template <
typename T>
3185template <
typename T>
3187template <
typename T>
3191template <
typename T>
3194template <
typename T>
3197template <
typename T>
3200template <
typename T>
3202template <
typename T>
3205template <
typename T>
3208template <
typename T>
3210template <
typename T>
3214template <
typename T>
3217template <
typename T>
3220template <
typename T>
3223template <
typename T>
3225template <
typename T>
3228template <
typename T>
3231template <
typename T>
3234template <
typename T>
3238template <
typename T>
3240 const T& y1,
const T& x2,
const T& y2,
3241 const T& ratio, T& nx, T& ny);
3243template <
typename T>
3246template <
typename T>
3250template <
typename T>
3253template <
typename T>
3257template <
typename T>
3260template <
typename T>
3263template <
typename T>
3268template <
typename T>
3271template <
typename T>
3275template <
typename T>
3278template <
typename T>
3282template <
typename T>
3286template <
typename T>
3289template <
typename T>
3294template <
typename T>
3297template <
typename T>
3301template <
typename T>
3304template <
typename T>
3308template <
typename T>
3309inline T
distance(
const T& x1,
const T& y1,
const T& x2,
const T& y2);
3310template <
typename T>
3311inline T
distance(
const T& x1,
const T& y1,
const T& z1,
const T& x2,
3312 const T& y2,
const T& z2);
3313template <
typename T>
3315template <
typename T>
3317template <
typename T>
3320template <
typename T>
3323template <
typename T>
3325template <
typename T>
3327template <
typename T>
3329template <
typename T>
3331template <
typename T>
3333template <
typename T>
3335template <
typename T>
3337template <
typename T>
3339template <
typename T>
3341template <
typename T>
3343template <
typename T>
3345template <
typename T>
3347template <
typename T>
3349template <
typename T>
3351template <
typename T>
3353template <
typename T>
3355template <
typename T>
3357template <
typename T>
3359template <
typename T>
3362template <
typename T>
3365template <
typename T>
3368template <
typename T>
3370template <
typename T>
3372template <
typename T>
3374template <
typename T>
3376template <
typename T>
3379template <
typename T>
3381template <
typename T>
3383 const T& y2,
const T& z2);
3384template <
typename T>
3386template <
typename T>
3388template <
typename T>
3390template <
typename T>
3392template <
typename T>
3394template <
typename T>
3396template <
typename T>
3398template <
typename T>
3401template <
typename T>
3404template <
typename T>
3406template <
typename T>
3408template <
typename T>
3410template <
typename T>
3413template <
typename T>
3417template <
typename T>
3419template <
typename T>
3421 const T& y2,
const T& z2);
3422template <
typename T>
3424template <
typename T>
3426template <
typename T>
3428template <
typename T>
3430template <
typename T>
3432template <
typename T>
3434template <
typename T>
3437template <
typename T>
3439template <
typename T>
3441 const T& y2,
const T& z2);
3442template <
typename T>
3444template <
typename T>
3446template <
typename T>
3448template <
typename T>
3450template <
typename T>
3453template <
typename T>
3456template <
typename T>
3458 const T& x2,
const T& y2,
const T& z2);
3459template <
typename T>
3462template <
typename T>
3465template <
typename T>
3467template <
typename T>
3469template <
typename T>
3473template <
typename T>
3476template <
typename T>
3479template <
typename T>
3482template <
typename T>
3485template <
typename T>
3489template <
typename T>
3492template <
typename T>
3495template <
typename T>
3498template <
typename T>
3501template <
typename T>
3504template <
typename T>
3507template <
typename T>
3511template <
typename T>
3514template <
typename T>
3517template <
typename T>
3520template <
typename T>
3523template <
typename T>
3527template <
typename T>
3530template <
typename T>
3533template <
typename T>
3536template <
typename T>
3539template <
typename T>
3542template <
typename T>
3545template <
typename T>
3549template <
typename T>
3551 const T& y2,
const T& x3,
const T& y3,
3552 const T& x4,
const T& y4);
3554template <
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);
3560template <
typename T>
3562 const T& y2,
const T& x3,
const T& y3,
3563 const T& x4,
const T& y4);
3565template <
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);
3571template <
typename T>
3573 const T& y2,
const T& x3,
const T& y3,
3574 const T& x4,
const T& y4);
3576template <
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);
3582template <
typename T>
3584 const T& y2,
const T& x3,
const T& y3,
3585 const T& x4,
const T& y4);
3587template <
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);
3593template <
typename T>
3597template <
typename T>
3601template <
typename T>
3605template <
typename T>
3609template <
typename T>
3612template <
typename T>
3615template <
typename T>
3617 const T& desty,
const T& t, T& nx, T& ny);
3619template <
typename T>
3621 const T& destx,
const T& desty,
const T& destz,
3622 const T& t, T& nx, T& ny, T& nz);
3624template <
typename T>
3626 const T& desty,
const T& dist, T& nx, T& ny);
3628template <
typename T>
3630 const T& destx,
const T& desty,
const T& destz,
3631 const T& dist, T& nx, T& ny, T& nz);
3633template <
typename T>
3637template <
typename T>
3640template <
typename T>
3643template <
typename T>
3646template <
typename T>
3649template <
typename T>
3652template <
typename T>
3655template <
typename T>
3658template <
typename T>
3662template <
typename T>
3667template <
typename T>
3672template <
typename T>
3677template <
typename T>
3682template <
typename T>
3686template <
typename T>
3688template <
typename T>
3690template <
typename T>
3692template <
typename T>
3694template <
typename T>
3696template <
typename T>
3698template <
typename T>
3700template <
typename T>
3703template <
typename T>
3706template <
typename T>
3708 const T& angle,
const T&
distance);
3709template <
typename T>
3711 const T& angle,
const T&
distance);
3712template <
typename T>
3715template <
typename T>
3718template <
typename T>
3720 const T& angle,
const T&
distance);
3722template <
typename T>
3725template <
typename T>
3728template <
typename T>
3731template <
typename T>
3734template <
typename T>
3737template <
typename T>
3741template <
typename T>
3744template <
typename T>
3747template <
typename T>
3750template <
typename T>
3753template <
typename T>
3756template <
typename T>
3760template <
typename T>
3762 T& ax, T& bx, T& ay, T& by);
3763template <
typename T>
3765 T& ax, T& bx, T& ay, T& by, T& az,
3767template <
typename T>
3769 T& ax, T& bx, T& cx, T& ay, T& by,
3771template <
typename T>
3773 T& ax, T& bx, T& cx, T& ay, T& by,
3774 T& cy, T& az, T& bz, T& cz);
3776template <
typename T>
3781template <
typename T>
3786template <
typename T>
3791template <
typename T>
3796template <
typename T>
3798 const T& ax,
const T& bx,
const T& ay,
3799 const T& by,
const T& t);
3801template <
typename T>
3803 const T& ax,
const T& bx,
const T& ay,
3804 const T& by,
const T& az,
const T& bz,
3807template <
typename T>
3809 const T& ax,
const T& bx,
const T& cx,
3810 const T& ay,
const T& by,
const T& cy,
3813template <
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,
3820template <
typename T>
3825template <
typename T>
3830template <
typename T>
3835template <
typename T>
3840template <
typename T,
typename OutputIterator>
3843 const std::size_t& point_count = 1000);
3844template <
typename T,
typename OutputIterator>
3847 const std::size_t& point_count = 1000);
3848template <
typename T,
typename OutputIterator>
3851 const std::size_t& point_count = 1000);
3852template <
typename T,
typename OutputIterator>
3855 const std::size_t& point_count = 1000);
3857template <
typename T>
3859 const std::size_t& point_count);
3860template <
typename T>
3862 const std::size_t& point_count);
3863template <
typename T>
3865 const std::size_t& point_count);
3866template <
typename T>
3868 const std::size_t& point_count);
3870template <
typename T>
3872template <
typename T>
3875template <
typename T>
3877 const T& x,
const T& y);
3878template <
typename T>
3880 const T& x,
const T& y,
const T& z);
3881template <
typename T>
3883 const T& x,
const T& y);
3884template <
typename T>
3886 const T& x,
const T& y);
3887template <
typename T>
3889 const T& y,
const T& z);
3890template <
typename T>
3893template <
typename T>
3896template <
typename T>
3898 const T& x,
const T& y);
3900template <
typename T>
3903template <
typename T>
3906template <
typename T>
3909template <
typename T>
3912template <
typename T>
3915template <
typename T>
3918template <
typename T>
3921template <
typename T>
3925template <
typename T>
3927template <
typename T>
3930template <
typename T>
3933template <
typename T>
3937template <
typename T>
3939template <
typename T>
3942template <
typename T>
3945template <
typename T>
3949template <
typename T>
3952template <
typename T>
3953inline 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);
3957template <
typename T>
3958inline 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);
3963template <
typename T>
3966template <
typename T>
3969template <
typename T>
3972template <
typename T>
3975template <
typename T>
3978template <
typename T>
3981template <
typename T>
3984template <
typename T>
3987template <
typename T>
3989template <
typename T>
3991template <
typename T>
3993template <
typename T>
3995template <
typename T>
3997template <
typename T>
3999template <
typename T>
4002template <
typename T>
4005template <
typename T>
4008template <
typename T>
4010template <
typename T>
4012template <
typename T>
4014template <
typename T>
4016template <
typename T>
4018template <
typename T>
4020template <
typename T>
4023template <
typename T>
4024inline void rotate(
const T& rotation_angle,
const T& x,
const T& y, T& nx,
4026template <
typename T>
4027inline void rotate(
const T& rotation_angle,
const T& x,
const T& y,
const T& ox,
4028 const T& oy, T& nx, T& ny);
4030template <
typename T>
4032template <
typename T>
4036template <
typename T>
4039template <
typename T>
4044template <
typename T>
4047template <
typename T>
4052template <
typename T>
4054template <
typename T>
4058template <
typename T>
4061template <
typename T>
4066template <
typename T>
4068 const T& x,
const T& y, T& nx, T& ny);
4070template <
typename T>
4072 const T& x,
const T& y,
const T& ox,
const T& oy, T& nx,
4075template <
typename T>
4078template <
typename T>
4083template <
typename T>
4085 const int rotation_angle,
4087template <
typename T>
4089 const int rotation_angle,
4093template <
typename T>
4095 const int rotation_angle,
4097template <
typename T>
4099 const int rotation_angle,
4103template <
typename T>
4105 const int rotation_angle,
4107template <
typename T>
4109 const int rotation_angle,
4113template <
typename T>
4115 const int rotation_angle,
4117template <
typename T>
4119 const int rotation_angle,
4123template <
typename T>
4125 const int rz,
const T& x,
const T& y,
const T& z, T& nx,
4128template <
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,
4134template <
typename T>
4136 const int ry,
const int rz,
4138template <
typename T>
4140 const int ry,
const int rz,
4144template <
typename T>
4146 const int ry,
const int rz,
4148template <
typename T>
4150 const int ry,
const int rz,
4154template <
typename T>
4156 const int ry,
const int rz,
4158template <
typename T>
4160 const int ry,
const int rz,
4164template <
typename T>
4166 const int ry,
const int rz,
4168template <
typename T>
4170 const int ry,
const int rz,
4174template <
typename T>
4176 const int ry,
const int rz,
4178template <
typename T>
4180 const int ry,
const int rz,
4184template <
typename T>
4186template <
typename T>
4188template <
typename T>
4191template <
typename T>
4194template <
typename T>
4197template <
typename T>
4200template <
typename T>
4202template <
typename T>
4206template <
typename T>
4208template <
typename T>
4210template <
typename T>
4212template <
typename T>
4214template <
typename T>
4216template <
typename T>
4218template <
typename T>
4220template <
typename T>
4223template <
typename T>
4225template <
typename T>
4227template <
typename T>
4230template <
typename T>
4233template <
typename T>
4235template <
typename T>
4238template <
typename T>
4240template <
typename T>
4244template <
typename T>
4247template <
typename T>
4250template <
typename T>
4253template <
typename T>
4256template <
typename T>
4259template <
typename T>
4262template <
typename T>
4265template <
typename T>
4269template <
typename T>
4271template <
typename T>
4273template <
typename T>
4275template <
typename T>
4277template <
typename T>
4279template <
typename T>
4281template <
typename T>
4283template <
typename T>
4286template <
typename T>
4288template <
typename T>
4290template <
typename T>
4293template <
typename T>
4296template <
typename T>
4298template <
typename T>
4300template <
typename T>
4302template <
typename T>
4306template <
typename T>
4308template <
typename T>
4310template <
typename T>
4313template <
typename T>
4316template <
typename T>
4318template <
typename T>
4321template <
typename T>
4323template <
typename T>
4327template <
typename T>
4330template <
typename T>
4333template <
typename T>
4336template <
typename T>
4339template <
typename T>
4342template <
typename T>
4345template <
typename T>
4347template <
typename T>
4351template <
typename T>
4353template <
typename T>
4355template <
typename T>
4357template <
typename T>
4359template <
typename T>
4361template <
typename T>
4364template <
typename T>
4366template <
typename T>
4368template <
typename T>
4370template <
typename T>
4372template <
typename T>
4374template <
typename T>
4377template <
typename T>
4379template <
typename T>
4381template <
typename T>
4383template <
typename T>
4385template <
typename T>
4387template <
typename T>
4390template <
typename T>
4393template <
typename T>
4396template <
typename T>
4399template <
typename T>
4402template <
typename T>
4405template <
typename T>
4409template <
typename T>
4412template <
typename T>
4414template <
typename T>
4416template <
typename T>
4419template <
typename T>
4422template <
typename T>
4425template <
typename T>
4427template <
typename T>
4430template <
typename T>
4433template <
typename T>
4435template <
typename T>
4437template <
typename T>
4439template <
typename T>
4441template <
typename T>
4443template <
typename T>
4445template <
typename T>
4447template <
typename T>
4449template <
typename T>
4451template <
typename T>
4454template <
typename T,
typename OutputIterator>
4456 const T& y2,
const std::size_t& point_count,
4457 OutputIterator out);
4458template <
typename T,
typename OutputIterator>
4460 const T& x2,
const T& y2,
const T& z2,
4461 const std::size_t& point_count,
4462 OutputIterator out);
4463template <
typename T,
typename OutputIterator>
4465 const std::size_t& point_count,
4466 OutputIterator out);
4467template <
typename T,
typename OutputIterator>
4469 const std::size_t& point_count,
4470 OutputIterator out);
4471template <
typename T,
typename OutputIterator>
4473 const std::size_t& point_count,
4474 OutputIterator out);
4475template <
typename T,
typename OutputIterator>
4477 const std::size_t& point_count,
4478 OutputIterator out);
4479template <
typename T,
typename OutputIterator>
4481 const std::size_t& point_count,
4482 OutputIterator out);
4483template <
typename T,
typename OutputIterator>
4485 const std::size_t& point_count,
4486 OutputIterator out);
4487template <
typename T,
typename OutputIterator>
4489 const std::size_t& point_count,
4490 OutputIterator out);
4491template <
typename T,
typename OutputIterator>
4493 const std::size_t& point_count,
4494 OutputIterator out);
4495template <
typename T,
typename OutputIterator>
4497 const std::size_t& point_count,
4498 OutputIterator out);
4500template <
typename T>
4503template <
typename T>
4506template <
typename T>
4509template <
typename T>
4512template <
typename T>
4515template <
typename T>
4517 const T& x2,
const T& y2,
const T& z2,
4520template <
typename T>
4522 const std::size_t& shift);
4524template <
typename T>
4526 const std::size_t& shift);
4528template <
typename T>
4530 const std::size_t& shift);
4532template <
typename T>
4534 const std::size_t& shift);
4536template <
typename T>
4538template <
typename T>
4541template <
typename T>
4543template <
typename T>
4546template <
typename T>
4548template <
typename T>
4551template <
typename T>
4553template <
typename T>
4556template <
typename T>
4558template <
typename T>
4561template <
typename T>
4563template <
typename T>
4566template <
typename T>
4568template <
typename T>
4571template <
typename T>
4573template <
typename T>
4577template <
typename T>
4579template <
typename T>
4581template <
typename T>
4583template <
typename T>
4586template <
typename T>
4588template <
typename T>
4591template <
typename T>
4593template <
typename T>
4595template <
typename T>
4597template <
typename T>
4600template <
typename T>
4602template <
typename T>
4605template <
typename T>
4607template <
typename T>
4610template <
typename T>
4612template <
typename T>
4615template <
typename T>
4617template <
typename T>
4620template <
typename T>
4622template <
typename T>
4625template <
typename T>
4629template <
typename T>
4631template <
typename T>
4633template <
typename T>
4636template <
typename T>
4639template <
typename T>
4642template <
typename T>
4644template <
typename T>
4647template <
typename T>
4649template <
typename T>
4652template <
typename T>
4656template <
typename T>
4658template <
typename T>
4660template <
typename T>
4663template <
typename T>
4666template <
typename T>
4669template <
typename T>
4671template <
typename T>
4674template <
typename T>
4676template <
typename T>
4679template <
typename T>
4682template <
typename T>
4685template <
typename T>
4687template <
typename T>
4689template <
typename T>
4691template <
typename T>
4694template <
typename T>
4696template <
typename T>
4699template <
typename T>
4701template <
typename T>
4703template <
typename T>
4706template <
typename T>
4708 const T& y2,
const T& z2);
4709template <
typename T>
4711template <
typename T>
4714template <
typename T>
4716template <
typename T>
4719template <
typename T>
4721template <
typename T>
4724template <
typename T>
4726template <
typename T>
4728template <
typename T>
4730template <
typename T>
4733template <
typename T>
4735template <
typename T>
4737template <
typename T>
4739template <
typename T>
4741template <
typename T>
4743template <
typename T>
4745template <
typename T>
4747template <
typename T>
4749template <
typename T>
4751template <
typename T>
4753template <
typename T>
4755template <
typename T>
4757template <
typename T>
4759template <
typename T>
4761template <
typename T>
4763template <
typename T>
4765template <
typename T>
4768template <
typename T>
4770template <
typename T>
4772template <
typename T>
4774template <
typename T>
4777template <
typename T>
4779template <
typename T>
4782template <
typename T>
4784template <
typename T>
4787template <
typename T>
4789template <
typename T>
4792template <
typename T>
4794template <
typename T>
4797template <
typename T>
4799template <
typename T>
4802template <
typename T>
4804template <
typename T>
4807template <
typename T>
4809template <
typename T>
4812template <
typename T>
4815template <
typename T>
4817 const T& dir_y,
const T& dir_z);
4819template <
typename T>
4822template <
typename T>
4826template <
typename T>
4829template <
typename T>
4831template <
typename T>
4835template <
typename T>
4837template <
typename T>
4840template <
typename T>
4843template <
typename T>
4845 const T& x2,
const T& y2,
const T& z2);
4847template <
typename T>
4850template <
typename T>
4854template <
typename T>
4856template <
typename T>
4859template <
typename T>
4861template <
typename T>
4863 const T& y2,
const T& z2);
4865template <
typename T>
4867template <
typename T>
4870template <
typename T>
4872template <
typename T>
4875template <
typename T>
4877template <
typename T>
4880template <
typename T>
4883template <
typename T>
4887template <
typename T>
4889 const T& y2,
const T& z2);
4890template <
typename T>
4893template <
typename T>
4895 const T& y2,
const T& x3,
const T& y3);
4897template <
typename T>
4899 const T& x2,
const T& y2,
const T& z2,
4900 const T& x3,
const T& y3,
const T& z3);
4902template <
typename T>
4906template <
typename T>
4911template <
typename T>
4913 const T& y2,
const T& x3,
const T& y3,
4914 const T& x4,
const T& y4);
4916template <
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);
4922template <
typename T>
4927template <
typename T>
4933template <
typename T>
4936template <
typename T>
4939template <
typename T>
4941template <
typename T>
4943template <
typename T>
4946template <
typename T>
4949template <
typename T>
4952template <
typename T>
4955template <
typename T>
4957template <
typename T>
4961template <
typename T>
4963 const T& x2,
const T& y2,
const T& z2,
4964 const T& x3,
const T& y3,
const T& z3);
4966template <
typename T>
4968 const T& nx,
const T& ny,
const T& nz);
4970template <
typename T>
4974template <
typename T>
4977template <
typename T>
4980template <
typename T, std::
size_t D,
typename InputIterator>
4982 const InputIterator end);
4984template <
typename T>
4986template <
typename T>
4989template <
typename T>
4991template <
typename T>
4993template <
typename T>
4995template <
typename T>
4997 const unsigned int point_count = 360);
5001#include "wykobi.inl" Definition wykobi.hpp:702
PointType & reference
Definition wykobi.hpp:711
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:709
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
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
std::size_t size() const
Definition wykobi.hpp:571
T t
Definition wykobi.hpp:573
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:561
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:440
PointType & reference
Definition wykobi.hpp:444
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:442
PointType center
Definition wykobi.hpp:446
const PointType & const_reference
Definition wykobi.hpp:443
T radius
Definition wykobi.hpp:447
Definition wykobi.hpp:287
PointType & reference
Definition wykobi.hpp:296
const PointType & const_reference
Definition wykobi.hpp:295
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:294
line()
Definition wykobi.hpp:291
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
plane()
Definition wykobi.hpp:690
define_vector_type< T, Dimension >::VectorType VectorType
Definition wykobi.hpp:694
reference operator()(const std::size_t &index)
Definition wykobi.hpp:90
T x
Definition wykobi.hpp:104
point2d< T > & operator=(const pointnd< T, 2 > &point)
Definition wykobi.hpp:84
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
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
reference operator()(const std::size_t &index)
Definition wykobi.hpp:125
Type & reference
Definition wykobi.hpp:112
point3d< T > & operator=(const pointnd< T, 3 > &point)
Definition wykobi.hpp:118
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(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 pointnd< T, D > &point)
Definition wykobi.hpp:206
pointnd< T, D > & operator=(const point2d< T > &point)
Definition wykobi.hpp:212
pointnd< T, D > & operator=(const point3d< T > &point)
Definition wykobi.hpp:220
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(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
define_point_type< double, Dimension >::PointType PointType
Definition wykobi.hpp:388
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
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
~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
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:476
const_reference operator[](const std::size_t &index) const
Definition wykobi.hpp:485
Definition wykobi.hpp:674
VectorType direction
Definition wykobi.hpp:683
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:679
ray()
Definition wykobi.hpp:676
PointType origin
Definition wykobi.hpp:682
~ray()
Definition wykobi.hpp:677
define_vector_type< T, Dimension >::VectorType VectorType
Definition wykobi.hpp:680
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
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
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:270
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
PointType & reference
Definition wykobi.hpp:320
triangle()
Definition wykobi.hpp:315
reference operator[](const std::size_t &index)
Definition wykobi.hpp:326
define_point_type< T, Dimension >::PointType PointType
Definition wykobi.hpp:318
~triangle()
Definition wykobi.hpp:316
Definition wykobi.hpp:757
static const unsigned int TableSize
Definition wykobi.hpp:759
const T & sin(const unsigned int angle) const
Definition wykobi.hpp:769
const T & tan(const unsigned int angle) const
Definition wykobi.hpp:771
trig_luts()
Definition wykobi.hpp:761
const T & cos(const unsigned int angle) const
Definition wykobi.hpp:770
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(const T &_x=T(0.0), const T &_y=T(0.0), const T &_z=T(0.0))
Definition wykobi.hpp:599
vector3d< T > & operator=(const vectornd< T, 3 > &vec)
Definition wykobi.hpp:605
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
const int CLIP_BOTTOM
Definition wykobi.hpp:750
T manhattan_distance(const T &x1, const T &y1, const T &x2, const T &y2)
rectangle< T > degenerate_rectangle()
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)
triangle< T, 2 > create_morley_triangle(const triangle< T, 2 > &triangle)
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)
sphere< T > make_sphere(const T &x, const T &y, const T &z, const T &radius)
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)
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))
point2d< T > generate_point_on_ray(const ray< T, 2 > &ray, const T &t)
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)
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)
vector2d< T > normalize(const vector2d< T > &v)
T robust_cartesian_angle(const T &x, const T &y)
rectangle< T > update_rectangle(const rectangle< T > &rectangle, point2d< T > &point)
line< T, 2 > triangle_symmedian(const triangle< T, 2 > &triangle, const std::size_t &symmedian)
triangle< T, 2 > create_first_brocard_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)
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)
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)
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)
point2d< T > closest_point_on_circle_from_segment(const circle< T > &circle, const segment< T, 2 > &segment)
T distance_from_point_to_sphere_center(const point3d< T > &point, const sphere< T > &sphere)
triangle< T, 2 > create_anticevian_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
circle< T > brocard_circle(const triangle< T, 2 > &triangle)
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)
triangle< T, 2 > create_incentral_triangle(const triangle< T, 2 > &triangle)
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
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)
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)
T perpendicular_product(const vector2d< T > &v1, const vector2d< T > &v2)
bool is_isosceles_triangle(const triangle< T, 2 > &triangle)
triangle< T, 2 > create_anticomplementary_triangle(const triangle< T, 2 > &triangle)
triangle< T, 2 > create_contact_triangle(const triangle< T, 2 > &triangle)
point2d< T > antipodal_point(const point2d< T > &point, const circle< T > &circle)
double epsilon< double >()
Definition wykobi.hpp:793
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 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)
circle< T > mandart_circle(const triangle< T, 2 > &triangle)
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)
triangle< T, 2 > create_medial_triangle(const triangle< T, 2 > &triangle)
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)
line< T, 2 > perspectrix(const triangle< T, 2 > &triangle1, const triangle< T, 2 > &triangle2)
circle< T > invert_circle_across_circle(const circle< T > &circle1, const circle< T > &circle2)
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))
segment< T, 2 > reverse_segment(const segment< T, 2 > &segment)
bool less_than_or_equal(const T &val1, const T &val2, const T &epsilon)
T horizontal_mirror(const T &angle)
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)
triangle< T, 2 > create_circummedial_triangle(const triangle< T, 2 > &triangle)
void circle_outer_tangent_segments(const circle< T > &circle0, const circle< T > &circle1, std::vector< segment< T, 2 > > &segments)
bool operator<(const point2d< T > &point1, const point2d< T > &point2)
triangle< T, 2 > create_symmedial_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
triangle< T, 2 > create_pedal_triangle(const point2d< T > &point, const triangle< T, 2 > &triangle)
bool is_equal(const T &val1, const T &val2, const T &epsilon)
circle< T > degenerate_circle()
const int PointInside
Definition wykobi.hpp:744
circle< T > nine_point_circle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
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)
triangle< T, 2 > right_shift(const triangle< T, 2 > &triangle, const std::size_t &shift)
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))
box< T, 3 > update_box(const box< T, 3 > &box, point3d< T > &point)
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)
triangle< T, 2 > create_feuerbach_triangle(const triangle< T, 2 > &triangle)
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)
polygon< T, 2 > remove_consecutive_collinear_points(const polygon< T, 2 > &polygon)
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)
triangle< T, 2 > create_excentral_triangle(const triangle< T, 2 > &triangle)
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)
void project_point135(const T &px, const T &py, const T &distance, T &nx, T &ny)
void lengthen_segment(T &x1, T &y1, T &x2, T &y2, const T &amount)
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)
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)
point2d< T > invert_point(const point2d< T > &point, const circle< T > &circle)
bool is_right_triangle(const wykobi::triangle< T, 2 > &triangle)
point2d< T > generate_random_point(const T &dx, const T &dy)
T bezier_curve_length(const quadratic_bezier< T, 2 > &bezier, const std::size_t &point_count)
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)
segment< T, 2 > degenerate_segment2d()
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)
point2d< T > generate_point_on_segment(const segment< T, 2 > &segment, const T &t)
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)
triangle< T, 2 > create_triangle(const point2d< T > &point1, const point2d< T > &point2, const T &angle1, const T &angle2)
const int AboveOrientation
Definition wykobi.hpp:741
ray< T, 2 > make_ray(const T &ox, const T &oy, const T &dir_x, const T &dir_y)
T vertex_angle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
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)
point3d< T > degenerate_point3d()
void project_point_t(const T &srcx, const T &srcy, const T &destx, const T &desty, const T &t, T &nx, T &ny)
point3d< T > positive_infinite_point3d()
const int RightHandSide
Definition wykobi.hpp:736
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)
circle< T > inscribed_circle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
sphere< T > invert_sphere_across_sphere(const sphere< T > &sphere1, const sphere< T > &sphere2)
T vertical_mirror(const T &angle)
point2d< T > rectangle_corner(const rectangle< T > &rectangle, const std::size_t &corner_index)
bool is_convex_polygon(const polygon< T, 2 > &polygon)
triangle< T, 2 > degenerate_triangle2d()
void circle_outer_tangent_lines(const circle< T > &circle0, const circle< T > &circle1, std::vector< line< T, 2 > > &lines)
triangle< T, 3 > degenerate_triangle3d()
void closest_point_on_line_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
vector2d< T > operator+(const vector2d< T > &v1, const vector2d< T > &v2)
line< T, 2 > triangle_external_bisector(const triangle< T, 2 > &triangle, const std::size_t &corner, const std::size_t &opposing_corner)
point2d< T > closest_point_on_circle_from_point(const circle< T > &circle, const point2d< T > &point)
triangle< T, 2 > vertex_triangle(const std::size_t &index, const polygon< T, 2 > polygon)
line< T, 2 > confined_triangle_median(const triangle< T, 2 > &triangle, const point2d< T > &point, const std::size_t &median)
segment< T, 2 > project_onto_axis(const point2d< T > &point, const line< T, 2 > &axis)
point2d< T > minkowski_sum(const point2d< T > &point1, const point2d< T > &point2)
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)
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)
line< T, 2 > tangent_line(const circle< T > &circle, const point2d< T > &point)
const int Cospherical
Definition wykobi.hpp:747
sphere< T > degenerate_sphere()
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_outer_vecten_triangle(const triangle< T, 2 > &triangle)
void closest_point_on_segment_from_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py, T &nx, T &ny)
bool 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)
triangle< T, 2 > bezier_convex_hull(const quadratic_bezier< T, 2 > &bezier)
triangle< T, 2 > create_intouch_triangle(const triangle< T, 2 > &triangle)
void project_point90(const T &px, const T &py, const T &distance, T &nx, T &ny)
point2d< T > closest_point_on_bezier_from_point(const quadratic_bezier< T, 2 > &bezier, const point2d< T > &point, const std::size_t &steps=1000)
line< T, 2 > degenerate_line2d()
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
unsigned int quadrant(const T &angle)
ray< T, 2 > degenerate_ray2d()
rectangle< T > make_rectangle(const T &x1, const T &y1, const T &x2, const T &y2)
bool not_equal(const T &val1, const T &val2, const T &epsilon)
point2d< T > exmedian_point(const triangle< T, 2 > &triangle, const std::size_t &corner)
segment< T, 2 > create_parallel_segment_on_point(const line< T, 2 > &line, const point2d< T > &point)
T chebyshev_distance(const T &x1, const T &y1, const T &x2, const T &y2)
point2d< T > orthocenter(const triangle< T, 2 > &triangle)
int orientation(const T &x1, const T &y1, const T &x2, const T &y2, const T &px, const T &py)
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)
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)
quadix< T, 3 > degenerate_quadix3d()
vector3d< T > degenerate_vector3d()
triangle< T, 2 > create_antipedal_triangle(const point2d< T > &point, const triangle< T, 2 > &triangle)
T generate_random_value(const T &range)
ray< T, 3 > degenerate_ray3d()
point3d< T > negative_infinite_point3d()
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)
box< T, 3 > make_box(const T &x1, const T &y1, const T &z1, const T &x2, const T &y2, const T &z2)
void incenter(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, T &px, T &py)
T normalize_angle(const T &angle)
segment< T, 3 > degenerate_segment3d()
segment< T, 2 > center_at_location(const segment< T, 2 > &segment, const T &x, const T &y)
line< T, 2 > create_perpendicular_bisector(const T &x1, const T &y1, const T &x2, const T &y2)
bool point_on_ray(const T &px, const T &py, const T &ox, const T &oy, const T &dx, const T &dy)
vector2d< T > degenerate_vector2d()
void project_point0(const T &px, const T &py, const T &distance, T &nx, T &ny)
triangle< T, 2 > create_cevian_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
line< T, 2 > create_perpendicular_line_at_end_point(const line< T, 2 > &line)
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))
T lay_distance(const T &x1, const T &y1, const T &x2, const T &y2)
const int LeftHandSide
Definition wykobi.hpp:737
point2d< T > positive_infinite_point2d()
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)
circle< T > update_circle(const circle< T > &circle, point2d< T > &point)
line< T, 2 > euler_line(const triangle< T, 2 > &triangle)
void intersection_point(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3, const T &x4, const T &y4, T &ix, T &iy)
point3d< T > closest_point_on_sphere_from_point(const sphere< T > &sphere, const point3d< T > &point)
T cartesian_angle(const T &x, const T &y)
vector2d< T > operator-(const vector2d< T > &v1, const vector2d< T > &v2)
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)
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)
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)
point3d< T > closest_point_on_sphere_from_segment(const sphere< T > &sphere, const segment< T, 3 > &segment)
point2d< T > feuerbach_point(const triangle< T, 2 > &triangle)
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)
triangle< T, 2 > create_orthic_triangle(const triangle< T, 2 > &triangle)
T operator*(const vector2d< T > &v1, const vector2d< T > &v2)
point3d< T > closest_point_on_plane_from_point(const plane< T, 3 > &plane, const point3d< T > &point)
triangle< T, 2 > create_inner_vecten_triangle(const triangle< T, 2 > &triangle)
bool convex_vertex(const std::size_t &index, const polygon< T, 2 > &polygon, const int &polygon_orientation=LeftHandSide)
void calculate_bezier_coefficients(const quadratic_bezier< T, 2 > &bezier, T &ax, T &bx, T &ay, T &by)
triangle< T, 2 > create_circumcevian_triangle(const triangle< T, 2 > &triangle, const point2d< T > &point)
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 > make_segment(const T &x1, const T &y1, const T &x2, const T &y2)
bool convex_quadix(const quadix< T, 2 > &quadix)
sphere< T > update_sphere(const sphere< T > &sphere, point3d< T > &point)
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)
segment< T, 2 > opposing_edge(const triangle< T, 2 > &triangle, const std::size_t &corner)
triangle< Float, 2 > triangle2d
Definition wykobi.hpp:782
point2d< T > cyclocevian_conjugate(const point2d< T > &point, const triangle< T, 2 > &triangle)
point2d< T > excenter(const triangle< T, 2 > &triangle, const std::size_t &corner)
point2d< T > scale(const T &dx, const T &dy, const point2d< T > &point)
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)
line< T, 2 > make_line(const T &x1, const T &y1, const T &x2, const T &y2)
point2d< T > isogonal_conjugate(const point2d< T > &point, 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)
quadix< Float, 2 > quadix2d
Definition wykobi.hpp:783
point2d< T > closest_point_on_polygon_from_point(const polygon< T, 2 > &polygon, const point2d< T > &point)
T distance_from_point_to_circle_center(const point2d< T > &point, const circle< T > &circle)
triangle< T, 2 > create_isosceles_triangle(const point2d< T > &point1, const point2d< T > &point2, const T &angle)
line< T, 3 > degenerate_line3d()
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
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)
point2d< T > closest_point_on_aabbb_from_point(const rectangle< T > &rectangle, const point2d< T > &point)
curve_point< T, 2 > make_curve_point(const T &x, const T &y, const T &t)
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)
vector2d< T > operator/(const vector2d< T > &v1, const T &scale)
quadix< Float, 3 > quadix3d
Definition wykobi.hpp:788
triangle< T, 2 > create_inner_napoleon_triangle(const triangle< T, 2 > &triangle)
void project_point180(const T &px, const T &py, const T &distance, T &nx, T &ny)
point3d< T > closest_point_on_sphere_from_sphere(const sphere< T > &sphere1, const sphere< T > &sphere2)
bool point_on_circle(const T &px, const T &py, const T &cx, const T &cy, const T &radius)
const int Clockwise
Definition wykobi.hpp:738
bool intersect_horizontal_horizontal(const segment< T, 2 > &segment1, const segment< T, 2 > &segment2)
point2d< T > symmedian_point(const triangle< T, 2 > &triangle)
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)
bool point_in_polygon_winding_number(const T &px, const T &py, const polygon< T, 2 > &polygon)
circle< T > circumcircle(const T &x1, const T &y1, const T &x2, const T &y2, const T &x3, const T &y3)
rectangle< T > aabb(const segment< T, 2 > &segment)
line< T, 2 > create_parallel_line_on_point(const line< T, 2 > &line, const point2d< T > &point)
bool collinear_vertex(const std::size_t &index, const polygon< T, 2 > &polygon)
point2d< T > make_point(const T &x, const T &y)
point2d< T > project_object(const point2d< T > &point, const T &angle, const T &distance)
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)
point2d< T > degenerate_point2d()
point2d< T > closest_point_on_circle_from_circle(const circle< T > &circle1, const circle< T > &circle2)
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)
point2d< T > translate(const T &dx, const T &dy, const point2d< T > &point)
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)
circle< T > excircle(const triangle< T, 2 > &triangle, const std::size_t &i)
void create_equilateral_triangle(const T &x1, const T &y1, const T &x2, const T &y2, T &x3, T &y3)
polygon< T, D > make_polygon(const InputIterator begin, const InputIterator end)
triangle< T, 2 > create_outer_napoleon_triangle(const triangle< T, 2 > &triangle)
segment< T, 2 > edge(const triangle< T, 2 > &triangle, const std::size_t &edge_index)
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)
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)
bool greater_than_or_equal(const T &val1, const T &val2, const T &epsilon)
quadix< T, 2 > degenerate_quadix2d()
void project_point270(const T &px, const T &py, const T &distance, T &nx, T &ny)
line< T, 2 > triangle_median(const triangle< T, 2 > &triangle, const std::size_t &median)
bool is_degenerate(const T &x1, const T &y1, const T &x2, const T &y2)
triangle< T, 2 > create_extouch_triangle(const triangle< T, 2 > &triangle)
T inverse_chebyshev_distance(const T &x1, const T &y1, const T &x2, const T &y2)
const int CoplanarOrientation
Definition wykobi.hpp:743
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)
const int CollinearOrientation
Definition wykobi.hpp:740
T distance(const T &x1, const T &y1, const T &x2, const T &y2)
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 > minkowski_difference(const point2d< T > &point1, const point2d< T > &point2)
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)
line< T, 2 > triangle_bisector(const triangle< T, 2 > &triangle, const std::size_t &bisector)
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
circle< T > make_circle(const T &x, const T &y, const T &radius)
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)
vector2d< T > make_vector(const T &x, const T &y)
void rotate(const T &rotation_angle, const T &x, const T &y, T &nx, T &ny)
point2d< T > negative_infinite_point2d()
bool polygon_within_rectangle(const polygon< T, 2 > &polygon, const rectangle< T > &rectangle)
const int CLIP_RIGHT
Definition wykobi.hpp:753
point3d< T > box_corner(const box< T, 3 > &box, const std::size_t &corner_index)
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)
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