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();
static double modulo(double a, double b)
{
return a - floor(a/b) * b;
}
#endif /* DORAYME_MATH_HELPER_H */

View File

@@ -20,7 +20,7 @@ public:
{
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) {

View File

@@ -22,7 +22,7 @@ public:
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) {

View File

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

View File

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