|
@@ -76,7 +76,7 @@ public:
|
|
|
real_t tc, tN, tD = D; // tc = tN / tD, default tD = D >= 0
|
|
|
|
|
|
// Compute the line parameters of the two closest points.
|
|
|
- if (D < CMP_EPSILON) { // The lines are almost parallel.
|
|
|
+ if (D < (real_t)CMP_EPSILON) { // The lines are almost parallel.
|
|
|
sN = 0.0f; // Force using point P0 on segment S1
|
|
|
sD = 1.0f; // to prevent possible division by 0.0 later.
|
|
|
tN = e;
|
|
@@ -142,7 +142,7 @@ public:
|
|
|
Vector3 s = p_from - p_v0;
|
|
|
real_t u = f * s.dot(h);
|
|
|
|
|
|
- if (u < 0.0f || u > 1.0f) {
|
|
|
+ if ((u < 0.0f) || (u > 1.0f)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -150,7 +150,7 @@ public:
|
|
|
|
|
|
real_t v = f * p_dir.dot(q);
|
|
|
|
|
|
- if (v < 0.0f || u + v > 1.0f) {
|
|
|
+ if ((v < 0.0f) || (u + v > 1.0f)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -183,7 +183,7 @@ public:
|
|
|
Vector3 s = p_from - p_v0;
|
|
|
real_t u = f * s.dot(h);
|
|
|
|
|
|
- if (u < 0.0f || u > 1.0f) {
|
|
|
+ if ((u < 0.0f) || (u > 1.0f)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -191,7 +191,7 @@ public:
|
|
|
|
|
|
real_t v = f * rel.dot(q);
|
|
|
|
|
|
- if (v < 0.0f || u + v > 1.0f) {
|
|
|
+ if ((v < 0.0f) || (u + v > 1.0f)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -199,7 +199,7 @@ public:
|
|
|
// the intersection point is on the line.
|
|
|
real_t t = f * e2.dot(q);
|
|
|
|
|
|
- if (t > CMP_EPSILON && t <= 1.0f) { // Ray intersection.
|
|
|
+ if (t > (real_t)CMP_EPSILON && t <= 1.0f) { // Ray intersection.
|
|
|
if (r_res) {
|
|
|
*r_res = p_from + rel * t;
|
|
|
}
|
|
@@ -213,7 +213,7 @@ public:
|
|
|
Vector3 sphere_pos = p_sphere_pos - p_from;
|
|
|
Vector3 rel = (p_to - p_from);
|
|
|
real_t rel_l = rel.length();
|
|
|
- if (rel_l < CMP_EPSILON) {
|
|
|
+ if (rel_l < (real_t)CMP_EPSILON) {
|
|
|
return false; // Both points are the same.
|
|
|
}
|
|
|
Vector3 normal = rel / rel_l;
|
|
@@ -229,7 +229,7 @@ public:
|
|
|
real_t inters_d2 = p_sphere_radius * p_sphere_radius - ray_distance * ray_distance;
|
|
|
real_t inters_d = sphere_d;
|
|
|
|
|
|
- if (inters_d2 >= CMP_EPSILON) {
|
|
|
+ if (inters_d2 >= (real_t)CMP_EPSILON) {
|
|
|
inters_d -= Math::sqrt(inters_d2);
|
|
|
}
|
|
|
|
|
@@ -253,7 +253,7 @@ public:
|
|
|
static inline bool segment_intersects_cylinder(const Vector3 &p_from, const Vector3 &p_to, real_t p_height, real_t p_radius, Vector3 *r_res = nullptr, Vector3 *r_norm = nullptr, int p_cylinder_axis = 2) {
|
|
|
Vector3 rel = (p_to - p_from);
|
|
|
real_t rel_l = rel.length();
|
|
|
- if (rel_l < CMP_EPSILON) {
|
|
|
+ if (rel_l < (real_t)CMP_EPSILON) {
|
|
|
return false; // Both points are the same.
|
|
|
}
|
|
|
|
|
@@ -269,7 +269,7 @@ public:
|
|
|
|
|
|
Vector3 axis_dir;
|
|
|
|
|
|
- if (crs_l < CMP_EPSILON) {
|
|
|
+ if (crs_l < (real_t)CMP_EPSILON) {
|
|
|
Vector3 side_axis;
|
|
|
side_axis[(p_cylinder_axis + 1) % 3] = 1.0f; // Any side axis OK.
|
|
|
axis_dir = side_axis;
|
|
@@ -285,7 +285,7 @@ public:
|
|
|
|
|
|
// Convert to 2D.
|
|
|
real_t w2 = p_radius * p_radius - dist * dist;
|
|
|
- if (w2 < CMP_EPSILON) {
|
|
|
+ if (w2 < (real_t)CMP_EPSILON) {
|
|
|
return false; // Avoid numerical error.
|
|
|
}
|
|
|
Size2 size(Math::sqrt(w2), p_height * 0.5f);
|
|
@@ -366,7 +366,7 @@ public:
|
|
|
Vector3 rel = p_to - p_from;
|
|
|
real_t rel_l = rel.length();
|
|
|
|
|
|
- if (rel_l < CMP_EPSILON) {
|
|
|
+ if (rel_l < (real_t)CMP_EPSILON) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -379,7 +379,7 @@ public:
|
|
|
|
|
|
real_t den = p.normal.dot(dir);
|
|
|
|
|
|
- if (Math::abs(den) <= CMP_EPSILON) {
|
|
|
+ if (Math::abs(den) <= (real_t)CMP_EPSILON) {
|
|
|
continue; // Ignore parallel plane.
|
|
|
}
|
|
|
|
|
@@ -564,11 +564,11 @@ public:
|
|
|
|
|
|
for (int a = 0; a < polygon.size(); a++) {
|
|
|
real_t dist = p_plane.distance_to(polygon[a]);
|
|
|
- if (dist < -CMP_POINT_IN_PLANE_EPSILON) {
|
|
|
+ if (dist < (real_t)-CMP_POINT_IN_PLANE_EPSILON) {
|
|
|
location_cache[a] = LOC_INSIDE;
|
|
|
inside_count++;
|
|
|
} else {
|
|
|
- if (dist > CMP_POINT_IN_PLANE_EPSILON) {
|
|
|
+ if (dist > (real_t)CMP_POINT_IN_PLANE_EPSILON) {
|
|
|
location_cache[a] = LOC_OUTSIDE;
|
|
|
outside_count++;
|
|
|
} else {
|