88 return (t > 0.0) ? t : -t;
107 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:GridHelpers:Transform")
118 if (bbMax[0] < proscenium[0] || bbMin[0] > proscenium[1] || bbMax[1] < proscenium[2] ||
119 bbMin[1] > proscenium[3])
124 Vec3r boxCenter(proscenium[0] + (proscenium[1] - proscenium[0]) / 2.0,
125 proscenium[2] + (proscenium[3] - proscenium[2]) / 2.0,
128 (proscenium[1] - proscenium[0]) / 2.0, (proscenium[3] - proscenium[2]) / 2.0, 1.0);
129 Vec3r triverts[3] = {
139 vector<Vec3r> points;
141 for (vector<WOEdge *>::const_iterator woe = fedges.begin(), woend = fedges.end(); woe != woend;
144 points.push_back((*woe)->GetaVertex()->GetVertex());
157 const real epsilon = 1.0e-6;
159 if (bbMin[0] <= proscenium[0]) {
160 proscenium[0] = bbMin[0] - epsilon;
163 if (bbMin[1] <= proscenium[2]) {
164 proscenium[2] = bbMin[1] - epsilon;
167 if (bbMax[0] >= proscenium[1]) {
168 proscenium[1] = bbMax[0] + epsilon;
171 if (bbMax[1] >= proscenium[3]) {
172 proscenium[3] = bbMax[1] + epsilon;
178 const real epsilon = 1.0e-6;
180 if (point[0] <= proscenium[0]) {
181 proscenium[0] = point[0] - epsilon;
184 if (point[1] <= proscenium[2]) {
185 proscenium[2] = point[1] - epsilon;
188 if (point[0] >= proscenium[1]) {
189 proscenium[1] = point[0] + epsilon;
192 if (point[1] >= proscenium[3]) {
193 proscenium[3] = point[1] + epsilon;
Various tools for geometry.
Read Guarded memory(de)allocation.
Class to define a polygon.
Classes to define a Winged Edge data structure.
ATTR_WARN_UNUSED_RESULT const BMVert * v
bool closest(btVector3 &v)
bool rayIntersect(const Vec3r &orig, const Vec3r &dir, real &t, real &u, real &v, real epsilon=M_EPSILON) const
void getBBox(Point &min, Point &max) const
const vector< Point > & getVertices() const
float distance(VecOp< float, D >, VecOp< float, D >) RET
bool overlapTriangleBox(const Vec3r &boxcenter, const Vec3r &boxhalfsize, const Vec3r triverts[3])
real distPointSegment(const T &P, const T &A, const T &B)
VecMat::Vec3< real > Vec3r
void getDefaultViewProscenium(real viewProscenium[4])
void expandProscenium(real proscenium[4], const Polygon3r &polygon)
real distancePointToPolygon(const Vec3r &point, const Polygon3r &poly)
T closestPointToSegment(const T &P, const T &A, const T &B, real &distance)
bool insideProscenium(const real proscenium[4], const Polygon3r &polygon)
Vec3r closestPointOnPolygon(const Vec3r &point, const Polygon3r &poly)
vector< Vec3r > enumerateVertices(const vector< WOEdge * > &fedges)