I have a function that computes a point in 3d spaced based on a value in range [0, 1]
. The problem I'm facing is, that a binary floating-point number cannot represent exactly 1.
The mathematical expression that is evaluated in the function is able to compute a value for t=1.0
, but the value will never be accepted by the function because it checks if for the range before computing.
curves_error curves_bezier(curves_PointList* list, curves_Point* dest, curves_float t) {
/* ... */
if (t < 0 || t > 1)
return curves_invalid_args;
/* ... */
return curves_no_error;
}
How can I, with this function, compute the 3d point at t=1.0
? I heard something about an ELLIPSIS
some time ago that I think had to do with such an issue, but I'm not sure.
Thanks
EDIT: Ok, I'm sorry. I assumed a float cannot represent exactly 1, because of the issue I'm facing. The problem may be because I was doing an iteration like this:
for (t=0; t <= 1.0; t += 0.1) {
curves_error error = curves_bezier(points, point, t);
if (error != curves_no_error)
printf("Error with t = %f.\n", t);
else
printf("t = %f is ok.\n", t);
}