fmod is not mathematically valid. Replace it by a correct one.

This commit is contained in:
Godzil
2020-03-04 16:15:49 +00:00
parent 107b612130
commit 1b6c14691b
5 changed files with 9 additions and 4 deletions

View File

@@ -23,4 +23,9 @@ double max3(double a, double b, double c);
double frand(); double frand();
static double modulo(double a, double b)
{
return a - floor(a/b) * b;
}
#endif /* DORAYME_MATH_HELPER_H */ #endif /* DORAYME_MATH_HELPER_H */

View File

@@ -20,7 +20,7 @@ public:
{ {
double value = floor(point.x) + floor(point.y) + floor(point.z); double value = floor(point.x) + floor(point.y) + floor(point.z);
return (fmod(value, 2) == 0)?this->a:this->b; return (modulo(value, 2) == 0)?this->a:this->b;
} }
void dumpMe(FILE *fp) { void dumpMe(FILE *fp) {

View File

@@ -22,7 +22,7 @@ public:
double value = floor(sqrt(squared)); double value = floor(sqrt(squared));
return (fmod(value, 2) == 0)?this->a:this->b; return (modulo(value, 2) == 0)?this->a:this->b;
} }
void dumpMe(FILE *fp) { void dumpMe(FILE *fp) {

View File

@@ -21,7 +21,7 @@ public:
Colour patternAt(Tuple point) Colour patternAt(Tuple point)
{ {
if (fmod(floor(point.x), 2) == 0) if (modulo(floor(point.x), 2) == 0)
{ {
return this->a; return this->a;
} }

View File

@@ -21,7 +21,7 @@ public:
double u2 = floor(u * this->width); double u2 = floor(u * this->width);
double v2 = floor(v * this->height); double v2 = floor(v * this->height);
if (fmod((u2 + v2), 2) == 0) if (modulo((u2 + v2), 2) == 0)
{ {
return this->a; return this->a;
} }